TreeSet
は、要素を自然順序付けまたは指定されたコンパレータで配置します。SortedSet
は、要素を自然順序でも保持しますしかし、それらとNavigableSet?
の違いは何ですかNavigableSets
はどこで役に立ちますか?
その使用法を示すいくつかの例は、初心者にはいいでしょう。
SortedSetはインターフェース(機能を定義)であり、Treesetは実装です。 NavigableSetもSortedSetのインターフェースサブタイプです。
単にSortedSet<Integer> example = new SortedSet<Integer>();
と書くことはできません
ただし、SortedSet<Integer> example = new TreeSet<Integer>();
と書くことはできます
その名前が示すように、NavigableSetsはセット内を移動するのに便利です。
http://mrbool.com/overview-on-navigableset-subtype-of-Java-collections/25417 は、NavigableSetsの優れたチュートリアルと、それを使用するときに利用できるいくつかのメソッドを提供していますが、 SortedSetで使用できます。
Java docs からの以下の抜粋が役立つと思います(詳細へのリンクを参照):
メソッドlower、floor、 ceiling、およびhigherは、それぞれ、より小さい、以下、より大きい、またはより大きい、およびより大きい要素を返します特定の要素。
this
は、きちんと説明された、十分に実証されたリファレンスです。
TreeSetはNavigableSetを実装し、(インターフェース)NavigableSetはSortedSetを拡張します
NavigableSetは、descendingIterator()およびdescendingSet()、ceiling()、floor()、higher()、lower()、headSet()、tailSet()、subSet()、pollFirst()、pollLast()などのナビゲーションメソッドを追加します。