JavaTM 2 Platform
Std. Ed. v1.3

java.util
クラス TreeSet

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractSet
              |
              +--java.util.TreeSet
すべての実装インタフェース:
Cloneable, Collection, Serializable, Set, SortedSet

public class TreeSet
extends AbstractSet
implements SortedSet, Cloneable, Serializable

このクラスは、TreeMap のインスタンスに基づく Set インタフェースを実装します。このクラスでは、ソートセットが確実に要素の昇順でソートされます。ただし、ソート方法は、使用されるコンストラクタにより異なり、要素の「自然順序付け」(Comparable を参照) によりソートされる場合と、セット作成時に提供されるコンパレータによりソートされる場合があります。

この実装は、基本オペレーション (addremove、および contains) に保証済みの log(n) 時間コストを提供します。

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

この実装は同期化されません。複数のスレッドが同時にセットにアクセスし、それらのスレッドの少なくとも 1 つが構造的にセットを変更する場合には、外部で同期をとる必要があります。通常、構造的な変更は、セットを自然にカプセル化する特定のオブジェクトで同期をとることによって達成されます。そのようなオブジェクトがない場合には、Collections.synchronizedSet メソッドを使ってセットを「ラップ」します。これは、セットへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。

     SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
 

このクラスの iterator メソッドが返す Iterator は「フェイルファスト」です。つまり、反復子の作成後に、反復子自体の remove メソッド以外の方法でセットが変更されると、反復子は ConcurrentModificationException をスローします。したがって、同時に変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、直ちにかつ手際よく例外をスローします。

導入されたバージョン:
1.2
関連項目:
Collection, Set, HashSet, Comparable, Comparator, Collections.synchronizedSortedSet(SortedSet), TreeMap, 直列化された形式

コンストラクタの概要
TreeSet()
          要素の自然順序付けに従ってソートされた、新しい空のセットを作成します。
TreeSet(Collection c)
          指定されたコレクション内の要素を持ち、要素の「自然順序付け」に従ってソートされた新しいセットを作成します。
TreeSet(Comparator c)
          指定されたコンパレータに従ってソートされた、新しい空のセットを作成します。
TreeSet(SortedSet s)
          指定されたソートセットと同じ要素を持ち、同じ順序付けに従ってソートされた、新しいセットを作成します。
 
メソッドの概要
 boolean add(Object o)
          指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。
 boolean addAll(Collection c)
          指定されたコレクション内のすべての要素をセットに追加します。
 void clear()
          すべての要素をセットから削除します。
 Object clone()
          TreeSet のインスタンスのシャローコピーを返します。
 Comparator comparator()
          ソートセットを順序付けするのに使うコンパレータを返します。
 boolean contains(Object o)
          セットが、指定された要素を保持している場合に true を返します。
 Object first()
          ソートセット内に現在ある最初 (下端) の要素を返します。
 SortedSet headSet(Object toElement)
          セットの toElement より小さい要素を持つ部分のビューを返します。
 boolean isEmpty()
          セットが要素を 1 つも保持していない場合に true を返します。
 Iterator iterator()
          セット内の各要素についての反復子を返します。
 Object last()
          ソートセット内に現在ある最後 (上端) の要素を返します。
 boolean remove(Object o)
          指定された要素があればセットから削除します。
 int size()
          セット内の要素数 (そのカーディナリティ) を返します。
 SortedSet subSet(Object fromElement, Object toElement)
          セットの fromElement (これを含む) 〜 toElement (これを含まない) の要素範囲を持つ部分のビューを返します。
 SortedSet tailSet(Object fromElement)
          セットの fromElement に等しいかこれより大きい要素を持つ部分のビューを返します。
 
クラス java.util.AbstractSet から継承したメソッド
equals, hashCode, removeAll
 
クラス java.util.AbstractCollection から継承したメソッド
containsAll, retainAll, toArray, toArray, toString
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.Set から継承したメソッド
containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray
 

コンストラクタの詳細

TreeSet

public TreeSet()
要素の自然順序付けに従ってソートされた、新しい空のセットを作成します。セットに挿入されたすべての要素は Comparable インタフェースを実装する必要があります。さらに、各要素は「相互に比較可能」である必要があります。つまり、e1.compareTo(e2) は、セット内の任意の要素 e1e2 のどちらに対しても ClassCastException をスローすべきではありません。たとえば、要素が整数のセットに文字列要素を追加しようとするなど、ユーザがこの制約に違反する要素をセットに追加しようとすると、add(Object) の呼び出しが ClassCastException をスローします。
関連項目:
Comparable

TreeSet

public TreeSet(Comparator c)
指定されたコンパレータに従ってソートされた、新しい空のセットを作成します。セットに挿入されたすべての要素は、指定されたコンパレータによって「相互に比較可能」である必要があります。つまり、comparator.compare(e1, e2) は、セット内の任意の要素 e1e2 のどちらに対しても ClassCastException をスローすべきではありません。ユーザがこの制約に違反する要素をセットに追加しようとすると、add(Object) の呼び出しが ClassCastException をスローします。
パラメータ:
c - このセットをソートするために使用されるコンパレータ。null 値は、要素の「自然順序付け」を使用することを示す

TreeSet

public TreeSet(Collection c)
指定されたコレクション内の要素を持ち、要素の「自然順序付け」に従ってソートされた新しいセットを作成します。セットに挿入されたすべてのキーは Comparable インタフェースを実装する必要があります。さらに、各キーは「相互に比較可能」である必要があります。つまり、k1.compareTo(k2) は、セット内の任意の要素 k1k2 のどちらに対しても ClassCastException をスローすべきではありません。
パラメータ:
c - 新しいセットを構成する要素
例外:
ClassCastException - 指定されたコレクション内のキーが比較可能でない場合、あるいは相互に比較可能でない場合

TreeSet

public TreeSet(SortedSet s)
指定されたソートセットと同じ要素を持ち、同じ順序付けに従ってソートされた、新しいセットを作成します。
パラメータ:
s - 新しいセットを構成する要素からなるソートセット
メソッドの詳細

iterator

public Iterator iterator()
セット内の各要素についての反復子を返します。各要素は昇順で返されます。
定義:
インタフェース Set 内の iterator
オーバーライド:
クラス AbstractCollection 内の iterator
戻り値:
セットの要素の反復子

size

public int size()
セット内の要素数 (そのカーディナリティ) を返します。
定義:
インタフェース Set 内の size
オーバーライド:
クラス AbstractCollection 内の size
戻り値:
セット内の要素数 (そのカーディナリティ)

isEmpty

public boolean isEmpty()
セットが要素を 1 つも保持していない場合に true を返します。
定義:
インタフェース Set 内の isEmpty
オーバーライド:
クラス AbstractCollection 内の isEmpty
戻り値:
セットが要素を 1 つも保持していない場合は true

contains

public boolean contains(Object o)
セットが、指定された要素を保持している場合に true を返します。
定義:
インタフェース Set 内の contains
オーバーライド:
クラス AbstractCollection 内の contains
パラメータ:
o - このセットにあるかどうかを判定するオブジェクト
戻り値:
セットが、指定された要素を保持している場合は true
例外:
ClassCastException - 指定されたオブジェクトがセット内に現在ある要素と比較可能でない場合

add

public boolean add(Object o)
指定された要素がセットの要素として存在しない場合に、その要素をセットに追加します。
定義:
インタフェース Set 内の add
オーバーライド:
クラス AbstractCollection 内の add
パラメータ:
o - セットに追加される要素
戻り値:
セットが指定された要素を保持していなかった場合は true
例外:
ClassCastException - 指定されたオブジェクトがセット内に現在ある要素と比較可能でない場合

remove

public boolean remove(Object o)
指定された要素があればセットから削除します。
定義:
インタフェース Set 内の remove
オーバーライド:
クラス AbstractCollection 内の remove
パラメータ:
o - セットにあれば削除されるオブジェクト
戻り値:
指定された要素がセット内にあった場合は true
例外:
ClassCastException - 指定されたオブジェクトがセット内に現在ある要素と比較可能でない場合

clear

public void clear()
すべての要素をセットから削除します。
定義:
インタフェース Set 内の clear
オーバーライド:
クラス AbstractCollection 内の clear
インタフェース java.util.Set からコピーされたタグ:
例外:
UnsupportedOperationException - セットが clear メソッドをサポートしていない場合

addAll

public boolean addAll(Collection c)
指定されたコレクション内のすべての要素をセットに追加します。
定義:
インタフェース Set 内の addAll
オーバーライド:
クラス AbstractCollection 内の addAll
パラメータ:
c - 追加される要素
戻り値:
この呼び出しの結果、このセットが変更された場合は true
例外:
ClassCastException - 指定された要素がセット内に現在ある要素と比較可能でない場合

subSet

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

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

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

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

headSet

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

このメソッドが返すソートセットは、ユーザが toElement より大きいか等しい要素を挿入しようとすると IllegalArgumentException をスローします。

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

     SortedSet head = s.headSet(high+"\0");
 
定義:
インタフェース SortedSet 内の headSet
パラメータ:
toElement - headSet の上端点 (これを含まない)
戻り値:
セットの toElement より小さい要素を持つ部分のビュー
例外:
ClassCastException - toElement がセットのコンパレータと互換性がない場合 (または、セットにコンパレータがない場合、toElementComparable が実装されていない場合)
IllegalArgumentException - このセット自体が subSet、headSet、または tailSet で、toElement が指定した範囲の subSet、headSet、または tailSet にない場合
NullPointerException - toElementnull の場合に、セットが自然順序付けを使うとき、あるいはそのコンパレータが null 要素を許容しないとき

tailSet

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

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

 SortedSet head = s.headSet(high+"\0");
定義:
インタフェース SortedSet 内の tailSet
パラメータ:
fromElement - tailSet の下端点 (これを含む)
戻り値:
セットの fromElement に等しいかこれより大きい要素を持つ部分のビュー
例外:
ClassCastException - fromElement がセットのコンパレータと互換性がない場合 (または、セットにコンパレータがない場合、fromElementComparable が実装されていない場合)
IllegalArgumentException - このセット自体が subSet、headSet、または tailSet で、fromElement が指定した範囲の subSet、headSet、または tailSet にない場合
NullPointerException - fromElementnull の場合に、セットが自然順序付けを使うとき、あるいはそのコンパレータが null 要素を許容しないとき

comparator

public Comparator comparator()
ソートセットを順序付けするのに使うコンパレータを返します。ただし、ツリーセットがその要素の自然順序付けを使う場合は null を返します。
定義:
インタフェース SortedSet 内の comparator
戻り値:
ソートセットを順序付けするのに使うコンパレータ。ただし、ツリーセットがその要素の自然順序付けを使う場合は null

first

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

last

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

clone

public Object clone()
TreeSet のインスタンスのシャローコピーを返します。その要素は複製されません。
オーバーライド:
クラス Object 内の clone
戻り値:
このセットのシャローコピー

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.