2011-01-06 31 views
15

可能重复:
Why can't I retrieve an item from a HashSet without enumeration?检索HashSet的对象在C#

我需要大量的对象添加到Set.and我应该找回它们非常快。我知道的唯一方法就是使用散列。但C#中的HashSet类不包含任何'Get'方法。字典类没有用处,因为在字典中查找对象非常耗时。

+0

这可能在将来帮助: http://msdn.microsoft.com/en-us/library/ms229335(v=vs.90).aspx – 5arx 2011-01-06 10:25:19

+0

@Masoud:你可以发布你的代码?可能更容易重建:-) – 2011-01-06 10:31:18

回答

12

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

如果你需要存储和检索对象,请使用其他集合类型,如列表,哈希表等

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; 
     } 
    } 
}