JavaTM 2 Platform
Std. Ed. v1.3

java.util
インタフェース SortedSet

すべてのスーパーインタフェース:
Collection, Set
既知の実装クラスの一覧:
TreeSet

public interface SortedSet
extends Set

反復子の動作を保証するセットです。反復子の動作とは、その要素の「自然順序付け」(Comparable を参照) に従ってソートされた昇順、またはソートセット作成時に提供される Comparator によってソートされた昇順の要素セットを全探索するものです。その順序付けを利用するために、追加のオペレーションがいくつか提供されています。このインタフェースはセットで、SortedMap に類似しています。

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

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

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

導入されたバージョン:
1.2
関連項目:
Set, TreeSet, SortedMap, Collection, Comparable, Comparator, ClassCastException

メソッドの概要
 Comparator comparator()
          ソートセットに関連したコンパレータを返します。
 Object first()
          ソートセット内に現在ある最初 (下端) の要素を返します。
 SortedSet headSet(Object toElement)
          ソートセットの toElement より小さい要素を持つ部分のビューを返します。
 Object last()
          ソートセット内に現在ある最後 (上端) の要素を返します。
 SortedSet subSet(Object fromElement, Object toElement)
          ソートセットの fromElement (含む) から toElement (含まない) までの要素範囲を持つ部分のビューを返します (fromElementtoElement が等しい場合、空のソートセットが返される)。
 SortedSet tailSet(Object fromElement)
          ソートセットの fromElement 以上の要素を持つ部分のビューを返します。
 
インタフェース java.util.Set から継承したメソッド
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
 

メソッドの詳細

comparator

public Comparator comparator()
ソートセットに関連したコンパレータを返します。ただし、その要素の自然順序付けを使う場合は null を返します。
戻り値:
ソートセットに関連したコンパレータ。ただし、その要素の自然順序付けを使う場合は null

subSet

public SortedSet subSet(Object fromElement,
                        Object toElement)
ソートセットの fromElement (含む) から toElement (含まない) までの要素範囲を持つ部分のビューを返します (fromElementtoElement が等しい場合、空のソートセットが返される)。返されるソートセットはこのソートセットによって基づいており、返されるソートセットでの変更はこのソートセットで反映され、その逆も成り立ちます。返されるソートセットは、このソートセットがサポートするオプションのセットオペレーションをすべてサポートします。

このメソッドによって返されるソートセットは、ユーザが要素を指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その下端点は含むが上端点は含まない「片側が開いた範囲」を返します。上下端点を含む「閉じた範囲」が必要で、要素の型により直後の要素の計算が可能になる場合、単に lowEndpointsuccessor(highEndpoint) の部分範囲を指定してください。たとえば、s が文字列のソートセットである場合、次の慣用法は、s 内の lowhigh のすべての文字列 (上下端点を含む) を保持するビューを取得します。

 SortedSet sub = s.subSet(low, high+"\0");
 
同様のテクニックを使って、上下端点のどちらも含まない「開いた範囲」を生成できます。次の慣用法は、s 内の low から high までのすべての String (上下端点を含まない) を保持するビューを取得します。
 SortedSet sub = s.subSet(low+"\0", high);
 
パラメータ:
fromElement - subSet の下端点 (これを含む)
toElement - subSet の上端点 (これを含まない)
戻り値:
このソートセット内の指定された範囲のビュー
例外:
ClassCastException - このセットのコンパレータを使用して、fromElement および toElement を相互に比較できない場合 (または、セットに自然順序付けを使用するコンパレータがない場合)。fromElement または toElement をセットの現在の要素と比較できない場合、必須ではないがこの例外がスローされる
IllegalArgumentException - fromElementtoElement より大きい場合。または、このセット自体が subSet、headSet、または tailSet で、fromElement または toElement が指定した範囲の subSet、headSet、または tailSet にない場合
NullPointerException - fromElement または toElementnull で、ソートセットが null 要素を許容しない場合

headSet

public SortedSet headSet(Object toElement)
ソートセットの toElement より小さい要素を持つ部分のビューを返します。返されるソートセットはこのソートセットに基づいており、返されるソートセットでの変更はこのソートセットで反映され、その逆も成り立ちます。返されるソートセットは、オプションのセットオペレーションをすべてサポートします。

このメソッドによって返されるソートセットは、ユーザが要素を指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (上) 端点を含まないビューを返します。この端点を含むビューを必要とし、要素の型により直後の要素の計算が可能になる場合、単に successor(highEndpoint) によって限界を設けられた headSet を指定してください。たとえば、s が文字列のソートセットである場合、次のイディオムは、s 内の high より小さいか等しいすべての文字列を保持するビューを取得します。

    SortedSet head = s.headSet(high+"\0");
パラメータ:
toElement - headSet の上端点 (これを含まない)
戻り値:
ソートセットの指定の初期範囲のビュー
例外:
ClassCastException - toElement がこのセットのコンパレータと互換性がない場合 (または、セットにコンパレータがない場合、toElementComparable が実装されていない場合)。toElement がセットの現在のキーと比較できない場合、必須ではないが、この例外がスローされる場合がある
NullPointerException - toElementnull で、ソートセットが null 要素を許容しない場合
IllegalArgumentException - このセット自体が subSet、headSet、または tailSet で、toElement が指定した範囲の subSet、headSet、または tailSet にない場合

tailSet

public SortedSet tailSet(Object fromElement)
ソートセットの fromElement 以上の要素を持つ部分のビューを返します。返されるソートセットはこのソートセットに基づいており、返されるソートセットでの変更はこのソートセットで反映され、その逆も成り立ちます。返されるソートセットは、オプションのセットオペレーションをすべてサポートします。

このメソッドによって返されるソートセットは、ユーザが要素を指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (下) 端点を含むビューを返します。この端点を含まないビューを必要とし、要素の型により直後の要素の計算が可能になる場合、単に successor(lowEndpoint) によって限界を設けられた tailSet を指定してください。たとえば、s が文字列のソートセットである場合、次の慣用法は、s 内の low より大きいすべての文字列を保持するビューを取得します。

    SortedSet tail = s.tailSet(low+"\0");
パラメータ:
fromElement - tailSet の下端点 (これを含む)
戻り値:
ソートセットの指定の最終範囲のビュー
例外:
ClassCastException - fromElement がこのセットのコンパレータと互換性がない場合 (または、セットにコンパレータがない場合、fromElementComparable が実装されていない場合)。fromElement がセットの現在の要素と比較できない場合、必須ではないが、この例外がスローされる場合がある
NullPointerException - fromElementnull で、ソートセットが null 要素を許容しない場合
IllegalArgumentException - このセット自体が subSet、headSet、または tailSet で、fromElement が指定した範囲の subSet、headSet、または tailSet にない場合

first

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

last

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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.