LinkedHashSetは、挿入順で並べられています。順番に物事を取得している場合 (データベースのクエリからなど)、取得した順序が維持され、O(1) ルックアップが提供されます (TreeSet の O(log n) と比較して)。オブジェクトの順序が簡単に比較できない場合にも役立ちます。
LinkedHashSet は、キャッシュにも特に役立ちます (LRU キャッシュを実装するために使用できるメソッドを提供するLinkedHashMapremoveEldestEntry
も参照してください(オブジェクトを削除して、最近使用された 100 個 (または構成されているもの) のアイテムのみを維持します)。
ただし、LinkedHashSet はインターフェースNavigableSetのサブクラスではありません。これは、セットを操作するための多くのツールが存在しないことを意味します。NavigableSet を逆にするには、descendingIterator()
またはを取得できますdescendingSet()
。何かの次に高い値を取得したり、ある点から別の点へのサブセットを取得したりできるなど、他のビットがあります。
NavigableSet を実装するクラスは 2 つあります。ConcurrentSkipListSet (スキップ リストを使用) とTreeSet (レッド ブラック ツリーを使用) です。
NavigableSet の要件は、要素に順序付けがあることです (によって実装されていComparable
ます。これらには、String、Date、およびさまざまな数値クラスが含まれ、さらに多くのクラスが含まれます...または、さらに言えば、 Comparable を実装するものはすべて.
これらはすべてセットであることに注意してください。これは、構造内に要素のコピーが 1 つしかないことを意味します。実際に複数のコピーを持つリストを探している場合は、作業するリストがあります。これらは、さまざまな目的のためのさまざまなツールです。