【C#】【コレクション】コレクション ~基本編~

コレクション

 * 配列に似ているが、追加・削除・検索などの操作が容易に可能

使用上の注意

 * System.Collections空間のコレクション(ArrayListなど)は古いので使用せず、
  System.Collections.Generic空間のコレクションを使用すること
 * 要素が増加し追加していくと大きなコストになりやすいので、
  要素の数が事前に分かっている場合は初期化時に指定するといい

   var list = new List<string>(15);

種類

 * ListとDictionary は良く使うが他のも知識として纏めておく
 (重要なのは、それぞれの特徴を理解しておき、その時の状況に応じて使い分けること)

List

 * 要素を順番に格納できる

Dictionary

 * キーと値のペアで格納できる

HashSet

 * 要素を高速に格納できる
 * ただし要素の重複を許さない
http://www.atmarkit.co.jp/fdotnet/dotnettips/756hashset/hashset.html

Queue

 * 要素を先入れ先出しできる
http://tech.bbtune.com/csharp/items/4-12.html

Stack

 * 要素を後入れ先出しできる

LinkedList

 * 大量の要素を高速に挿入・削除できる
 * しかし、要素番号による操作はできない

SortedDictionary

 * 二分岐探索により、大量の要素を高速で検索できる

ReadOnlyCollection

 * 読み取り専用のコレクション

ObservableCollection

 * 変更通知できるコレクション
http://smdn.jp/programming/netfx/collections/3_objectmodel_2_observablecollection/

ConcurrentQueue

 * 複数のスレッドから使用できるキュー
http://d.hatena.ne.jp/siokoshou/20090721

ConcurrentStack

 * 複数のスレッドから使用できるスタック