====== コレクション クラス の性能比較 ======  計算量や速度については、[[algorithm:big_o_notation|O-記法と計算量/速度の関係]]を参照のこと。\\ ===== System.Collections.Generic 名前空間 ===== ==== Dictionary ==== ^処理^計算量^ ^メソッド^^ |Add |Count <= 容量 O(1)に近い\\ Count > 容量 O(n) - 自動拡張の為 | |Clear |O(n) | |ContainsKey |O(1)に近い | |ContainsValue |O(n) | |Remove |O(1)に近い | ^プロパティ^^ |Count |O(1) | |Item |O(1)に近い | ==== HashSet ==== ^処理^計算量^ ^メソッド^^ |Add |Count <= 容量 O(1)に近い\\ Count > 容量 O(n) - 自動拡張の為 | |Clear |O(n) | |Contains |O(1) | |Remove |O(1) | ^プロパティ^^ |Count |O(1) | ==== LinkedList ==== ^処理^計算量^ ^メソッド^^ |AddAfter、AddBefore、AddFirst、AddLast |O(1) | |Clear |O(n) | |Contains |O(n) | |Find |O(n) | |FindLast |O(n) | |Remove |O(n) | |RemoveFirst、RemoveLast |O(1) | ^プロパティ^^ |Count、First、Last |O(1) | ==== List ==== ^処理^計算量^ ^メソッド^^ |Add |Count <= 容量 O(1)\\ Count > 容量 O(n) - 自動拡張の為 | |AddRange |Count <= 容量 O(n)\\ Count > 容量 O(n + m) - 自動拡張の為 | |Clear |O(n) | |Contains |O(n) | |Exists |O(n) | |Find、FindAll、FindIndex、FindIndex、FindLastIndex |O(n) | |GetRange |O(n) | |IndexOf |O(n) | |Insert |O(n) | |InsertRange |O(n + m) | |LastIndexOf |O(n) | |Remove、RemoveAll、RemoveAt、RemoveRange|O(n) | |Reverse |O(n) | |Sort |O(n log n) | ^プロパティ^^ |Count |O(1) | |Item |O(1) | ==== Queue ==== ^処理^計算量^ ^メソッド^^ |Clear |O(n) | |Contains |O(n) | |Dequeue |O(1) | |Enqueue |O(n) | |Peek |O(1) | |TrimExcess |O(n) | ^プロパティ^^ |Count |O(1) | ==== SortedDictionary ==== ^処理^計算量^ ^メソッド^^ |Add |O(log n) | |Clear |O(1) | |ContainsKey |O(log n) | |ContainsValue |O(n) | |Remove |O(log n) | |TryGetValue |O(log n) | ^プロパティ^^ |Count |O(1) | |Item |取得: O(log n)\\ 設定: O(log n) | ==== SortedList ==== ^処理^計算量^ ^メソッド^^ |Add |未ソートデータ追加: O(n)\\ ソートデータ追加: O(log n)\\ Count > 容量: O(n) - 自動拡張の為 | |Clear |O(n) | |ContainsKey |O(log n) | |ContainsValue |O(n) | |IndexOfKey |O(log n) | |IndexOfValue |O(n) | |Remove |O(n) | |RemoveAt |O(n) | |TrimExcess |O(n) | |TryGetValue |O(log n) | ^プロパティ^^ |Count |O(1) | |Item |取得: O(log n)\\ 設定: O(log n)\\ 未ソートデータ追加: O(n)\\ ソートデータ追加: O(log n)\\ Count > 容量(追加): O(n) - 自動拡張の為 | ==== Stack ==== ^処理^計算量^ ^メソッド^^ |Clear |O(n) | |Contains |O(n) | |Peek |O(1) | |Pop |O(1) | |Push |O(1) | |TrimExcess |O(n) | ^プロパティ^^ |Count |O(1) | ===== System.Collections.Specialized 名前空間 ===== ==== HybridDictionary ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== ListDictionary ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== NameObjectCollectionBase ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== NameValueCollection ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== OrderedDictionary ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== StringCollection ==== ^処理^計算量^ ^メソッド^^ | | | ^プロパティ^^ | | | ==== StringDictionary ==== ^処理^計算量^ ^メソッド^^ |Add |O(1) | |Clear |O(n) | |ContainsKey |O(1) | |ContainsValue |O(n) | |CopyTo |O(n) | |GetEnumerator |O(1) | |Remove |O(1) | ^プロパティ^^ |Count |O(1) | |Item |O(1) | |Keys |O(1) | |Values |O(1) |