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