查找布尔值为索引的更好结构?

时间:2010-11-03 13:57:52

标签: c# .net generics

这有点挑剔,我可能忽略了一些简单的事情

有时我会有一些整数,并且必须能够查找它们是真还是假。我总是通过使用Dictionary< int,bool>来解决这个问题。 ,插入一个true并且只使用ContainsKey来查看某些内容是否为true(默认情况下为false)。

但是插入一个甚至没有使用过的bool似乎不是一个优雅的解决方案:)你会为此推荐什么样的结构?查找性能是主要的,插入是次要的(但很重要)

一些好的(LINQ)语法,有一堆索引和返回未包含的项目将是一个奖金

2 个答案:

答案 0 :(得分:10)

使用HashSet<int>保存“true”整数,并使用Contains搜索集合。使用这种方法,您只需存储所需的数据,即可获得与字典相同的O(1)性能。

答案 1 :(得分:1)

你可以使用一些int。

如果为true,则设置array [position] = 1,如果为false,则设置为=。

查找在O(1)中完成,插入已经有了。只要你需要就可以声明数组。

这不是最经济的解决方案。在.NET 2.0中,您没有HashSet。

或者第二个选项,您可以使用BitArray