E
- このセットで保持される要素の型public interface SortedSet<E> extends Set<E>
Set
です。要素の順序付けは、その自然順序付けに従って行われるか、セット構築時に通常提供される Comparator
を使って行われます。セットのイテレータは、セットを要素の昇順でトラバースします。その順序付けを利用するために、追加のオペレーションがいくつか提供されています。(このインタフェースはセットで、SortedMap
に類似しています。)
ソートセットに挿入されるすべての要素は、Comparable インタフェースを実装するか、指定されたコンパレータによって受け入れられる必要があります。さらに、各要素は相互に比較可能である必要があります。つまり、ソートセット内の任意の要素 e1 と e2 に対して、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 のメンバーです。
Set
, TreeSet
, SortedMap
, Collection
, Comparable
, Comparator
, ClassCastException
修飾子と型 | メソッドと説明 |
---|---|
Comparator<? super E> |
comparator()
このセット内の要素を順序付けするために使うコンパレータを返します。ただし、このセットがその要素の自然順序付けを使う場合は null を返します。
|
E |
first()
セット内に現在ある最初 (下端) の要素を返します。
|
SortedSet<E> |
headSet(E toElement)
このセットの toElement よりも確実に小さい要素を持つ部分のビューを返します。
|
E |
last()
セット内に現在ある最後 (上端) の要素を返します。
|
SortedSet<E> |
subSet(E fromElement, E toElement)
このセットの fromElement (これを含む) - toElement (これを含まない) の要素範囲を持つ部分のビューを返します。
|
SortedSet<E> |
tailSet(E fromElement)
このセットの fromElement に等しいかそれよりも大きい要素を持つ部分のビューを返します。
|
Comparator<? super E> comparator()
SortedSet<E> subSet(E fromElement, E toElement)
返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentException をスローします。
fromElement
- 返されるセットの下端点 (これを含む)toElement
- 返されるセットの上端点 (これを含まない)ClassCastException
- このセットのコンパレータを使用して (このセットがコンパレータを持たない場合は自然順序付けを使用して)、fromElement と toElement の相互比較を行えない場合。実装は、セット内に現在存在している要素と fromElement または toElement とを比較できない場合にこの例外をスローできる。ただし、必須ではない。NullPointerException
- fromElement または toElement が null であり、このセットが null 要素を許可しない場合IllegalArgumentException
- fromElement が toElement よりも大きい場合、またはこのセット自体が制限された範囲を持っており、fromElement または toElement がその範囲から外れている場合SortedSet<E> headSet(E toElement)
返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentException をスローします。
toElement
- 返されるセットの上端点 (これを含まない)ClassCastException
- toElement がこのセットのコンパレータと互換性がない場合 (または、そのセットがコンパレータを持たない場合、toElement が Comparable
を実装していない場合)。実装は、セット内に現在存在している要素と toElement とを比較できない場合にこの例外をスローできる。ただし、必須ではない。NullPointerException
- toElement が null であり、このセットが null 要素を許可しない場合IllegalArgumentException
- このセット自体が制限された範囲を持っており、toElement がその範囲から外れている場合SortedSet<E> tailSet(E fromElement)
返されるセットは、その範囲外の要素が挿入されようとすると、IllegalArgumentException をスローします。
fromElement
- 返されるセットの下端点 (これを含む)ClassCastException
- fromElement がこのセットのコンパレータと互換性がない場合 (または、そのセットがコンパレータを持たない場合、fromElement が Comparable
を実装していない場合)。実装は、セット内に現在存在している要素と fromElement とを比較できない場合にこの例外をスローできる。ただし、必須ではない。NullPointerException
- fromElement が null であり、このセットが null 要素を許可しない場合IllegalArgumentException
- このセット自体が制限された範囲を持っており、fromElement がその範囲から外れている場合E first()
NoSuchElementException
- このセットが空の場合E last()
NoSuchElementException
- このセットが空の場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.