性能特性 | 目次 |
ここまでの説明で異なるコレクション型は異なる性能特性を持つ点を明らかにしてきました。 これは他の型ではなくあるコクション型を選択する主な理由となります。 コレクションの主要な演算に対する性能特性は以下の2つの 表に要約できます。
head | tail | apply | 更新 | 先頭に追加 | 末尾に追加 | insert | |
---|---|---|---|---|---|---|---|
不変 | |||||||
List | 定数 | 定数 | 線形 | 線形 | 定数 | 線形 | - |
Stream | 定数 | 定数 | 線形 | 線形 | 定数 | 線形 | - |
Vector | 実質定数 | 実質定数 | 実質定数 | 実質定数 | 実質定数 | 実質定数 | - |
Stack | 定数 | 定数 | 線形 | 線形 | 定数 | 線形 | - |
Queue | 償却定数 | 償却定数 | 線形 | 線形 | 線形 | 定数 | - |
Range | 定数 | 定数 | 定数 | - | - | - | - |
String | 定数 | 線形 | 定数 | 線形 | 線形 | 線形 | - |
可変 | |||||||
ArrayBuffer | 定数 | 線形 | 定数 | 定数 | 線形 | 償却定数 | 線形 |
ListBuffer | 定数 | 線形 | 線形 | 線形 | 定数 | 定数 | 線形 |
StringBuilder | 定数 | 線形 | 定数 | 定数 | 線形 | 償却定数 | 線形 |
MutableList | 定数 | 線形 | 線形 | 線形 | 定数 | 定数 | 線形 |
Queue | 定数 | 線形 | 線形 | 線形 | 定数 | 定数 | 線形 |
ArraySeq | 定数 | 線形 | 定数 | 定数 | - | - | - |
Stack | 定数 | 線形 | 線形 | 線形 | 定数 | 線形 | 線形 |
ArrayStack | 定数 | 線形 | 定数 | 定数 | 償却定数 | 線形 | 線形 |
Array | 定数 | 線形 | 定数 | 定数 | - | - | - |
参照 | add | remove | min | |
---|---|---|---|---|
不変 | ||||
HashSet/HashMap | 実質定数 | 実質定数 | 実質定数 | 線形 |
TreeSet/TreeMap | 対数 | 対数 | 対数 | 対数 |
BitSet | 定数 | 線形 | 線形 | 実質定数3 |
ListMap | 線形 | 線形 | 線形 | 線形 |
可変 | ||||
HashSet/HashMap | 実質定数 | 実質定数 | 実質定数 | 線形 |
WeakHashMap | 実質定数 | 実質定数 | 実質定数 | 線形 |
BitSet | 定数 | 償却定数 | 定数 | 実質定数4 |
これらの2つの表の中身は次のような意味です:
最初の表では列型—不変なものも可変なものも—を以下の演算で処理しています:
2番目の表では可変および不変な集合とマップを以下の演算で処理しています:
続いては: 等値性
性能特性 | 目次 |