从C#中的hashset中检索对象

时间:2011-01-06 10:18:28

标签: c# hash

  

可能重复:
  Why can't I retrieve an item from a HashSet without enumeration?

我需要向Set添加很多对象。我应该非常快速地检索它们。我知道的唯一方法是使用哈希。但是C#中的HashSet类不包含任何“Get”方法。字典类没用,因为在字典中查找对象非常耗时。

2 个答案:

答案 0 :(得分:12)

HashSets主要用于测试对象是否包含在集合中。它是无序的和未排序的,没有可用于检索对象的索引。

如果您需要存储和检索对象,请使用其他集合类型,如List,HashTable等。

答案 1 :(得分:1)

HashSet表示许多值。您可以使用Contains()查看集合中是否有某个值。字典用于存储对象并通过其散列(键)检索它。

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        public enum EnumA
        {
            One,
            Two,
            Three,
            Four
        }

        static void Main(string[] args)
        {
            HashSet<EnumA> test = new HashSet<EnumA>();

            test.Add(EnumA.Four);

            Console.WriteLine("Contains one:");
            Console.WriteLine(test.Contains(EnumA.One));
            Console.WriteLine("Contains four:");
            Console.WriteLine(test.Contains(EnumA.Four));
            Console.WriteLine();
            Console.ReadLine();

            return;
        }
    }
}