私は Java 初心者です。Java でソートされたリストを維持するために使用できる/使用すべきコレクションを教えてください。Map
と を試しましたSet
が、探していたものではありません。
ベストアンサー1
これはかなり遅い段階で登場しますが、ソートされたリストを持つことだけを目的としたクラスが JDK に存在します。このクラスの名前は (他のSorted*
インターフェースとは少し順序が異なりますが) " java.util.PriorityQueue
" です。このComparable<?>
クラスは s または を使ってソートできますComparator
。
List
ソート済みの場合との違いはCollections.sort(...)
、ヒープ データ構造を使用することで、常に部分的な順序が維持され、挿入パフォーマンスは O(log(n)) になるのに対し、ソート済みの場合の挿入はArrayList
O(n) (つまり、バイナリ検索と移動を使用) になることです。
ただし、とは異なりList
、PriorityQueue
はインデックスアクセス(get(5)
)をサポートしていません。ヒープ内のアイテムにアクセスする唯一の方法は、一度に1つずつ取り出すことです。(そのため、名前は ですPriorityQueue
)。