这有点挑剔,我可能忽略了一些简单的事情
有时我会有一些整数,并且必须能够查找它们是真还是假。我总是通过使用Dictionary< int,bool>来解决这个问题。 ,插入一个true并且只使用ContainsKey来查看某些内容是否为true(默认情况下为false)。
但是插入一个甚至没有使用过的bool似乎不是一个优雅的解决方案:)你会为此推荐什么样的结构?查找性能是主要的,插入是次要的(但很重要)
一些好的(LINQ)语法,有一堆索引和返回未包含的项目将是一个奖金
答案 0 :(得分:10)
使用HashSet<int>
保存“true”整数,并使用Contains
搜索集合。使用这种方法,您只需存储所需的数据,即可获得与字典相同的O(1)性能。
答案 1 :(得分:1)
你可以使用一些int。
如果为true,则设置array [position] = 1,如果为false,则设置为=。
查找在O(1)中完成,插入已经有了。只要你需要就可以声明数组。
这不是最经济的解决方案。在.NET 2.0中,您没有HashSet。
或者第二个选项,您可以使用BitArray