JavaTM 2 Platform
Standard Ed. 5.0

java.util
インタフェース SortedSet<E>

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

public interface SortedSet<E>
extends Set<E>

反復子の動作を保証するセットです。反復子の動作とは、その要素の「自然順序付け」(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 つ持つコンストラクタです。インタフェースはコンストラクタを保持できないので、これを強制的に推奨することはできませんが、JDK 実装 (TreeSet クラス) はこれに準拠します。

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

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

メソッドの概要
 Comparator<? super E> comparator()
          ソートセットに関連したコンパレータを返します。
 E first()
          ソートセット内に現在ある最初 (下端) の要素を返します。
 SortedSet<E> headSet(E toElement)
          ソートセットの toElement より小さい要素を持つ部分のビューを返します。
 E last()
          ソートセット内に現在ある最後 (上端) の要素を返します。
 SortedSet<E> subSet(E fromElement, E toElement)
          ソートセットの fromElement (含む) から toElement (含まない) までの要素範囲を持つ部分のビューを返します (fromElementtoElement が等しい場合、空のソートセットが返される)。
 SortedSet<E> tailSet(E fromElement)
          ソートセットの fromElement 以上の要素を持つ部分のビューを返します。
 
インタフェース 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 をスローします。

注: このメソッドは常に、その下端点は含むが上端点は含まない「片側が開いた範囲」を返します。上下端点を含む「閉じた範囲」が必要で、要素の型により直後の要素の計算が可能になる場合、単に 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

SortedSet<E> headSet(E 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

SortedSet<E> tailSet(E 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

E first()
ソートセット内に現在ある最初 (下端) の要素を返します。

戻り値:
ソートセット内に現在ある最初 (下端) の要素
例外:
NoSuchElementException - ソートセットが空の場合

last

E last()
ソートセット内に現在ある最後 (上端) の要素を返します。

戻り値:
ソートセット内に現在ある最後 (上端) の要素
例外:
NoSuchElementException - ソートセットが空の場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。