モジュール java.base
パッケージ java.util

インタフェースSortedSet<E>

型パラメータ:
E - このセットで保持される要素の型
すべてのスーパー・インタフェース:
Collection<E>, Iterable<E>, SequencedCollection<E>, SequencedSet<E>, Set<E>
既知のすべてのサブインタフェース:
NavigableSet<E>
既知のすべての実装クラス:
ConcurrentSkipListSet, TreeSet

public interface SortedSet<E> extends Set<E>, SequencedSet<E>
その要素に対して全体順序付けを提供するSetです。 要素の順序付けは、その自然順序付けに従って行われるか、セット構築時に通常提供されるComparatorを使って行われます。 セットのイテレータは、セットを要素の昇順でトラバースします。 その順序付けを利用するために、追加のオペレーションがいくつか提供されています。 (このインタフェースはセットで、SortedMapに類似しています。)

ソートされたセットに挿入されるすべての要素は、Comparableインタフェース(または指定されたコンパレータによって受け入れられます)を実装する必要があります。 さらに、このような要素はすべて相互に比較可能である必要があります: e1.compareTo(e2) (またはcomparator.compare(e1, e2))は、ソートされたセット内の要素e1およびe2に対してClassCastExceptionをスローしないでください。 この制約に違反すると、その違反側のメソッドやコンストラクタの呼出しはClassCastExceptionをスローします。

ソートされたセット(明示的なコンパレータが指定されているかどうか)によって保持される順序付けは、ソートされたセットがSetインタフェースを正しく実装する場合、「等しいと一貫性」である必要があります。 (equalsとの一貫性の正確な定義については、ComparableインタフェースまたはComparatorインタフェースを参照してください。) これは、Setインタフェースがequals操作に関して定義されていますが、ソートされたセットでは、そのcompareTo (またはcompare)メソッドを使用してすべての要素比較が実行されるため、このメソッドで等しいとみなされる2つの要素は、ソートされたセットの観点から等しくなります。 ソートされたセットの動作は、順序付けが等しいと矛盾する場合でもよく定義されます。Setインタフェースの一般的な契約に従うことはできません。

ソートされたすべての汎用セット実装クラスは、4つの"standard"コンストラクタを提供する必要があります: 1) void (引数なし)コンストラクタ。要素の自然順序に従ってソートされた空のソート・セットを作成します。2) Comparator型の単一の引数を持つコンストラクタ。これにより、指定されたコンパレータに従ってソートされた空のソート・セットが作成されます。3)型の単一の引数を持つコンストラクタ。Collectionは、要素の自然順序に従ってソートされた、引数と同じ要素を持つ新しいソート・セットを作成します。4) SortedSet型の単一の引数を持つコンストラクタ。これにより、同じ要素を持つ新しいソート・セットが作成され、ソートされた入力セットと同じ順序付けが行われます。 この推奨を強制する方法はありません。なぜなら、インタフェースにはコンストラクタを含めることができないからです。

ノート:一部のメソッドは、制限された範囲を持つサブセットを返します。 そのような範囲は片側が開いています。つまり、それらの範囲には、下端点は含まれますが上端点は含まれません(該当する場合)。 「閉じた範囲」 (両方のエンドポイントを含む)が必要で、要素タイプで特定の値の後続を計算できる場合は、単にサブレンジをlowEndpointからsuccessor(highEndpoint)にリクエストするだけです。 たとえば、sがソートされた文字列のセットであるとします。 次のidiomは、s内のすべての文字列を含むビューをlowからhighまで取得します:

   SortedSet<String> sub = s.subSet(low, high+"\0");
同様のテクニックを使って、上下端点のどちらも含まない開いた範囲を生成できます。 次のidiomは、s内のすべての文字列を含むビューを、lowからhigh、排他的に取得します:
   SortedSet<String> sub = s.subSet(low+"\0", high);

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.2
関連項目: