2011-01-06 28 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; 
     } 
    } 
}