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

インタフェースSortedSet<E>

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

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

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

あるソート・セットがSetインタフェースを正しく実装するには、明示的なコンパレータが提供されているかどうかにかかわらず、そのソート・セットによって維持される順序付けがequalsとの一貫性のあるものでなければいけないことに注意してください。 (equalsとの一貫性の正確な定義については、ComparableインタフェースまたはComparatorインタフェースを参照してください。) これはSetインタフェースがequalsオペレーションに基づいて定義されるためですが、ソート・セットはそのcompareToメソッドまたはcompareメソッドを使用してすべての要素比較を実行するので、このメソッドによって等価と見なされる2つの要素は、ソート・セットの見地からすれば同じものです。 ソート・セットの動作は、その順序付けがequalsと一貫性がない場合でも明確に定義されていますが、Setインタフェースの一般規約には準拠していません。

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

ノート:一部のメソッドは、制限された範囲を持つサブセットを返します。 そのような範囲は片側が開いています。つまり、それらの範囲には、下端点は含まれますが上端点は含まれません(該当する場合)。 上下端点を含む閉じた範囲が必要で、要素の型により直後の要素の計算が可能になる場合、単にlowEndpoint - successor(highEndpoint)の部分範囲を指定してください。 たとえば、sが文字列のソート・セットであるとします。 次の慣用法は、low - highの範囲(上下端点を含む)にあるs内のすべての文字列を保持するビューを取得します。

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

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

導入されたバージョン:
1.2
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    Comparator<? super E>
    このセット内の要素を順序付けするために使うコンパレータを返します。ただし、このセットがその要素の自然順序付けを使う場合はnullを返します。
    セット内に現在ある最初(下端)の要素を返します。
    headSet(E toElement)
    このセットのtoElementよりも確実に小さい要素を持つ部分のビューを返します。
    セット内に現在ある最後(上端)の要素を返します。
    default Spliterator<E>
    このソート・セット内の要素に対するSpliteratorを作成します。
    subSet(E fromElement, E toElement)
    このセットのfromElement (これを含む) - toElement (これを含まない)の要素範囲を持つ部分のビューを返します。
    tailSet(E fromElement)
    このセットのfromElementに等しいかそれよりも大きい要素を持つ部分のビューを返します。

    インタフェース java.util.Collectionで宣言されたメソッド

    parallelStream, removeIf, stream, toArray

    インタフェース java.lang.Iterableで宣言されたメソッド

    forEach

    インタフェース java.util.Setで宣言されたメソッド

    add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
  • メソッドの詳細

    • comparator

      Comparator<? super E> comparator()
      このセット内の要素を順序付けするために使うコンパレータを返します。ただし、このセットがその要素の自然順序付けを使う場合はnullを返します。
      戻り値:
      このセット内の要素を順序付けするのに使うコンパレータ。このセットがその要素の自然順序付けを使う場合はnull
    • subSet

      SortedSet<E> subSet(E fromElement, E toElement)
      このセットのfromElement (これを含む) - toElement (これを含まない)の要素範囲を持つ部分のビューを返します。 fromElementtoElementが等しい場合は、空のセットが返されます。 返されるセットはこのセットに連動しており、返されるセットでの変更はこのセットに反映され、その逆の場合も同様です。 返されるセットは、このセットがサポートする任意のセット・オペレーションをすべてサポートします。

      返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentExceptionをスローします。

      パラメータ:
      fromElement - 返されるセットの下端点(これを含む)
      toElement - 返されるセットの上端点(これを含まない)
      戻り値:
      このセットのfromElement (これを含む) - toElement (これを含まない)の要素範囲を持つ部分のビュー
      例外:
      ClassCastException - このセットのコンパレータを使用して(このセットがコンパレータを持たない場合は自然順序付けを使用して)、fromElementtoElementを相互に比較できない場合。 実装は、セット内に現在存在している要素とfromElementまたはtoElementとを比較できない場合にこの例外をスローできる。ただし、必須ではない。
      NullPointerException - fromElementまたはtoElementがnullであり、このセットがnull要素を許可しない場合
      IllegalArgumentException - fromElementtoElementよりも大きい場合、またはこのセット自体が制限された範囲を持っており、fromElementまたはtoElementがその範囲から外れている場合
    • headSet

      SortedSet<E> headSet(E toElement)
      このセットのtoElementよりも確実に小さい要素を持つ部分のビューを返します。 返されるセットはこのセットに連動しており、返されるセットでの変更はこのセットに反映され、その逆の場合も同様です。 返されるセットは、このセットがサポートする任意のセット・オペレーションをすべてサポートします。

      返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentExceptionをスローします。

      パラメータ:
      toElement - 返されるセットの上端点(これを含まない)
      戻り値:
      このセットのtoElementよりも確実に小さい要素を持つ部分のビュー
      例外:
      ClassCastException - toElementがこのセットのコンパレータと互換性がない場合(または、そのセットがコンパレータを持たない場合、toElementComparableを実装していない場合)。 実装は、セット内に現在存在している要素とtoElementとを比較できない場合にこの例外をスローできる。ただし、必須ではない。
      NullPointerException - toElementがnullであり、このセットがnull要素を許可しない場合
      IllegalArgumentException - このセット自体が制限された範囲を持っており、toElementがその範囲から外れている場合
    • tailSet

      SortedSet<E> tailSet(E fromElement)
      このセットのfromElementに等しいかそれよりも大きい要素を持つ部分のビューを返します。 返されるセットはこのセットに連動しており、返されるセットでの変更はこのセットに反映され、その逆の場合も同様です。 返されるセットは、このセットがサポートする任意のセット・オペレーションをすべてサポートします。

      返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentExceptionをスローします。

      パラメータ:
      fromElement - 返されるセットの下端点(これを含む)
      戻り値:
      このセットのfromElementに等しいかそれよりも大きい要素を持つ部分のビュー
      例外:
      ClassCastException - fromElementがこのセットのコンパレータと互換性がない場合(または、そのセットがコンパレータを持たない場合、fromElementComparableを実装していない場合)。 実装は、セット内に現在存在している要素とfromElementとを比較できない場合にこの例外をスローできる。ただし、必須ではない。
      NullPointerException - fromElementがnullであり、このセットがnull要素を許可しない場合
      IllegalArgumentException - このセット自体が制限された範囲を持っており、fromElementがその範囲から外れている場合
    • first

      E first()
      セット内に現在ある最初(下端)の要素を返します。
      戻り値:
      セット内に現在ある最初(下端)の要素
      例外:
      NoSuchElementException - このセットが空の場合
    • last

      E last()
      セット内に現在ある最後(上端)の要素を返します。
      戻り値:
      セット内に現在ある最後(上端)の要素
      例外:
      NoSuchElementException - このセットが空の場合
    • spliterator

      default Spliterator<E> spliterator()
      このソート・セット内の要素に対するSpliteratorを作成します。

      Spliteratorは、Spliterator.DISTINCTSpliterator.SORTEDおよびSpliterator.ORDEREDを報告します。 実装は、追加の特性値の報告をドキュメント化する必要があります。

      ソート・セットのコンパレータ(comparator()を参照)がnullの場合、スプリッテレータのコンパレータ(Spliterator.getComparator()を参照)はnullである必要があります。 それ以外の場合、スプリッテレータのコンパレータはソート・セットのコンパレータと同じであるか、同じ全体順序付けを適用する必要があります。

      定義:
      spliterator、インタフェースCollection<E>
      定義:
      spliterator、インタフェースIterable<E>
      定義:
      spliterator、インタフェースSet<E>
      実装要件:
      デフォルト実装は、ソート・セットのIteratorから遅延バインディング・スプリッテレータを作成します。 スプリッテレータは、セットのイテレータのフェイルファスト・プロパティを継承します。 スプリッテレータのコンパレータはソート・セットのコンパレータと同じです。

      作成されたSpliteratorは、追加でSpliterator.SIZEDを報告します。

      実装上のノート:
      作成されたSpliteratorはさらにSpliterator.SUBSIZEDも報告します。
      戻り値:
      このソート・セット内の要素に対するSpliterator
      導入されたバージョン:
      1.8