2012-01-21 19 views
1

我有一個小樣本。我們什麼時候使用HashSet <>

//Class 
public class GetEntity 
{ 
    public string name1 { get; set; } 
    public string name2 { get; set; } 
    public GetEntity() { } 
} 

和:

public void GetHash() 
    { 
    HashSet objHash = new HashSet(); 
    GetEntity obj = new GetEntity(); 
    obj.name1 = "Ram"; 
    obj.name2 = "Shyam"; 
    objHash.Add(obj); 
    foreach (GetEntity objEntity in objHash) 
     { 
     Label2.Text = objEntity.name1.ToString() + objEntity.name2.ToString(); 
     } 

    } 

代碼工作fine.Same任務是通過字典和List.But做,我想知道,當我們使用HashSet的<>,字典<>或列表<>。就是隻有性能問題或任何其他我不明白的東西。謝謝。

回答

5

i want to know when we use HashSet<> , Dictionary<> or <List>

他們都有着不同的目的和不同的場景

HashSet的

使用的,使用當你想擁有一個獨特元素的集合。 HashSet存儲唯一元素的列表,並且不允許重複。如果你想擁有對唯一鍵的值

字典

被使用。 Dictionary中的每個元素都有兩個部分:一個(唯一)鍵和一個值。您可以在其中存儲一個唯一的密鑰(就像Hashset一樣),另外還可以存儲一個針對該唯一密鑰的值。

列表

是元素的只是一個簡單的集合。你可以有重複的東西。

+0

有用讀 - http://www.dotnetperls.com/hashset-performance – IanNorton

1

我自己不是C#的人,但以下應該是區別。

請糾正我,如果我錯了

的HashSet只需要唯一值,值可以通過索引隨機訪問,工作在固定的時間

字典將鍵值對,值可以隨機訪問按鍵名稱,鍵名不能重複。這也是一個非常快速的DS。在恆定時間工作

列表將採取n個值,即使它們不是唯一的,也必須按順序訪問值。時間插入和檢索的複雜性是O(N),在最壞的情況下

2

Set不包含重複的值。

0

它們都稱爲集合,通常位於名稱空間 System.Collections.Generic

何時使用某種數據結構本質上需要了解它們支持哪些操作。對於 HashSet,它基本上是一個設置在數學上,並支持高效添加,刪除,並快速判斷一個元素是否存在在集合中。鑑於這是一個Set裏的元素必須是唯一的Hashset秒。

對於字典,它基本上是一種映射結構,即一組鍵值對字典上的鍵 - 值對提供有效查詢與給定的密鑰和添加/刪除鍵 - 值對

列表 s是訂購元素的集合。不像Hashsets,判斷列表中的一個元素的存在是低效。與字典不同,內部數據結構不是鍵值對,而是簡單對象。另一個區別是你可以使用索引(如列表[3])來有效地訪問列表中的元素。 (雖然它不是真實的LinkedList)

相關問題