Array
List
Dictionary
Immutable Collections
Concurrent Collentions
Array 可以foreach顯示順序就是當初設定的順序 , Zero-index 0是第一個 ,
new array 就必須設定長度 只給長度沒給值 每個值就會是default<T>
Q1 Why Array can forecah (string 也可以) List<T> 是最常用的
A :因為Array string List 都有繼承 IEnumerable , 所以你要把自定物件 也可以支援foreach 就是去實作IEnumerable
List Add Item 時 是放到最後一個 比較沒有效能問題 ,
Insert / Remove 到任意index 會有效能問題 因為每個Item 都會後搬移 尤其是在很前面
Dictionary 沒有index的概念 所以沒有Insert
LINQ 是 read-only概念 沒有新增刪除item 只能選取創新物件
Collection Type 都是 參考型別 所以兩個內容完全相同的 集合 用 == 比較 會是false
要比較集合內容是否一樣 可以用 SequenceEqual (真的去一個一個item比較)
O(1) 最快 (不管集合大小都不會改變)
O(N) 會看集合大小 改變速度
for 裡面用到O(N) 就會變成 O(N2)
List 的 Find 是 O(N) , 而 Dictionary 的 TryGetValue 是 O(1)
SortedDictionary 跟 Sorted
超大集合 用List 新增移除 會有效能問題 , 可以改用 LinkList
因為 LinkList 每一個item 會紀錄上一個記憶體位置跟下一個記憶體位置 不需要搬移記憶體
Stack 後進先出 彈夾的概念 最後裝的子彈 會最先擊發 push , pop
Queue 先進先出 排隊的概念 先到的人 先上車 enqueue , dequeue
Stack 跟 Queue 都有 peek 可以先看一下 下個item 是誰(只是看 沒有移除)
Immutable Collections 是Thread-safe
如果內容有誤請多鞭策謝謝