代码之家  ›  专栏  ›  技术社区  ›  Micah

存储需要在.Net中大量查找的整数列表的最有效的数据结构是什么?

  •  3
  • Micah  · 技术社区  · 14 年前

    我需要一个有效的数据结构来存储整数列表。清单中的数量可能从1到1000不等。每个请求将查询该列表大约20次。存储这些数据的最有效的收集类型是什么?

    为了更深入的了解,我们将 www.wikipediamaze.com (a little game I wrote)

    protected BestDataStructure<long> PlayedPuzzles {get; set;} //Loaded from session
    
    protected bool HasBeenPlayed(long puzzleId)
    {
        return PlayedPuzzles.Contains(puzzleId)
    }
    

    谢谢!

    4 回复  |  直到 14 年前
        1
  •  5
  •   driis    14 年前

    这取决于您需要如何查询它们,但是需要一个简单的数组,或者 HashSet<int> 我突然想到。

    当索引到它们时,它们都是O(1)。HashSet.Contains包含也是O(1)。

    回答你对这个问题的评论 :使用HashSet,因为您需要检查指定的整数是否存在。您应该在HashSet上使用Contains();它将提供最佳性能。如果需要存储与该值相关的其他值,可以使用Dictionary。

        2
  •  2
  •   Mark    14 年前

    如果你正在寻找一个能有效地执行如下操作的结构 Contains() ,那么 HashSet<int> 就是你要找的。 哈希集<int> 是O(1)(恒定时间)吗

        3
  •  1
  •   Kimi    14 年前
        4
  •  1
  •   PiRX    14 年前

    如果您需要检查元素的存在,那么 bool[] 包含1000个元素,并为现有整数元素设置为true?