1. 程式人生 > >C# 集合總結

C# 集合總結

list linked 叠代 eid 可能 查詢 數據 一個 each

1,Array ,ArrayList,List<類型> 數組, 連續分配的,查詢速度快,但增刪不方便

#region 鏈表

2,LinkedList<類型>,LinkedListNode<類型> 鏈表 ,非連續分配,每個元素都有前後節點,找元素只能遍歷,查找不方便,增刪容易

3,Queue<T> 隊列,也是鏈表,先進先出,增刪快,可以重復數據,一般放置任務,延遲執行

4,Stack<T> 棧,也是鏈表,先進後出

  1)Push

  2)pok

  3)

#endregion

#region Set:

1,HashSet<T> hash集合,hash分布,去重復,元素間沒有關系,不能索引獲取數據

  HashSet<String> hashSet=new HashSet<String>();

  hashSet.Add("123");

  hashSet.Add("456");

  hashSet.Add("456");

應用:兩個HashSet 可以進行 交、叉、並、補,操作

2,SortedSet<T> 排序集合,去重+排序,交、叉、並、補 也可以

#endregion

#region Hashtable

1,Hashtable :key-value類型(無序類型),體積動態增加,基於數組實現的,增刪查改都快,但是浪費空間,效率可能會低。

  線程安全:只有一個線程寫,多個線程讀。

  Hashtable table=new Hashtable();

  table.Add("123","456")

  table[234]=456;

#endregion

#region  Dictionary key-value 類型

1,Dictionary<int,string> 有序的,增刪查效率高(數據太多除外)

2,SortedDictionary<int,string>,排序字典,自動排序,增刪效率就稍微低一點

3,SortedList list=new SortedList(), 排序列表,key不能重復添加

  list.Add("aa","bb");

#endregion

foreach 就是叠代器的實現

yieid 叠代器的實現,狀態機形式的,在使用的時候去取值,不在初始化的時候一次性把數據加載 (性能優化)。

C# 集合總結