しくみ 長所 短所
リスト(List) 要素ごとに、次の要素がどこにあるかというポインタを持つ。 不変。長さが可変。データに順序性がある。 先頭から順にアクセスすることとしかできない。メモリ使用量は多め。
配列(Array) 連続したメモリ空間に順次格納する。 連続した領域に保存されるため、インデックス番号で高速にアクセス可能。 サイズ変更に大きな時間がかかる場合がある。
マップ(Map) 内部に用意された配列に、ハッシュ関数を使用してアクセスする。 不変。キーを利用して固定時間でのアクセスが可能。インデックスが連続する自然数である必要がない。 データに順序性が(表向きには)ない。要素数が少ない場合にはListを線形探索した方が早い場合がある。
集合(Set) 内部に用意された配列に、ハッシュ関数を使用してアクセスする。 不変。Mapに似ているが、特定のキーが集合に存在するかどうかだけを保持する。 左の目的に合致すれば、Mapよりもメモリ使用量は少ない。
シーケンス(Seq) 要素の並びをどこかに持っているわけではなく、「次の値を生成する関数」を値が要求されるたびに呼び出しているだけ。 無限集合を扱える。値を保持しているわけではないのでメモリを食わない。 シーケンシャルに取り出してもあまり早くない。
最終更新:2013年11月30日 13:11