名称 | 概要 | 実装方式 | 相当する C++(STL)の コンテナ |
備考 |
List<T> | 最も汎用的なコレクションクラス。 インデクスによる要素の取得、変更(ランダムアクセス)が多い場合に適する。 |
配列 | vector | 継承されることが想定されていない |
LinkedList<T> | 要素の追加・削除が多い場合に適する。 挿入、削除(ノード指定)が非常に高速。 インデクスによる検索(ランダムアクセス)は不可。 |
連結リスト | list | |
Queue<T> | キュー(FIFO)。エンキュー、デキューが非常に高速。 | 循環配列 | queue | |
Stack<T> | スタック(LIFO)。プッシュ、ポップが非常に高速。 | 配列 | stack |
名称 | 概要 | 実装方式 | 相当する C++(STL)の コンテナ |
備考 |
Dictionary<TKey, TValue> | キーの検索が非常に高速。 格納順が保証されない。 (挿入順に格納されるとは限らない。) |
ハッシュテーブル | unordered_map | メモリ消費が比較的大きい。 |
SortedDictionary<TKey, TValue> | 格納順が保証される。 要素の追加・削除が多い場合に適する。 |
二分探索木 | Dictionaryに比べ、 メモリ消費が小さい。 |
|
SortedList<TKey, TValue> | 格納順(ソート後)が保証される。 インデクスでもアクセス可能。 |
ソートされた配列 | map | SortedDictionaryに比べ、 メモリ消費が小さい。 |
名称 | 概要 | 実装方式 | 相当する C++(STL)の コンテナ |
備考 |
HashSet<T> | 値の検索が非常に高速。 格納順が保証されない。 (挿入順に格納されるとは限らない。) |
ハッシュテーブル | unordered_set | メモリ消費が比較的大きい。 |
SortedSet<T> | 格納順が保証される。 インデクスでもアクセス可能。 |
二分探索木 | set |
名称 | 概要 |
BlockingCollection<T> | ConcurrentBag, ConcurrentQueue, ConcurrentStack をラップできる。 通常はFIFOとして動作。 |
ConcurrentBag<T> | データバッグ(取り出し順序不定)。 |
ConcurrentQueue<T> | スレッドセーフなQueue。 |
ConcurrentStack<T> | スレッドセーフなStack。 |
ConcurrentDictionary<TKey, TValue> | スレッドセーフなDictionary。 |
名称 | 概要 |
Collection<T> | 上記の各コレクションの基底クラス。すべてのコレクションをラップできる。 |