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

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

  •  1
  • Homde  · 技术社区  · 15 年前

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

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

    2 回复  |  直到 15 年前
        1
  •  10
  •   Andrew Hare    15 年前

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

        2
  •  1
  •   Liviu Mandras    15 年前

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

    这不是最节省内存的解决方案。在.NET2.0中没有哈希集。

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