|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.AbstractMap | +--java.util.TreeMap
SortedMap インタフェースの実装に基づく Red-Black ツリーです。このクラスでは、マップが確実にキーの昇順でソートされます。ただし、ソート方法はコンストラクタにより異なり、キーのクラスの「自然順序付け」(Comparable を参照) によりソートされる場合と、作成時に提供されるコンパレータによってソートされる場合があります。
この実装は、containsKey、get、put、remove の各オペレーションに保証済みの log(n) 時間コストを提供します。アルゴリズムは、Cormen、Leiserson、Rivest の「Introduction to Algorithms」のものに手を加えています。
ソートマップにより Map インタフェースを正しく実装する場合は、明示的なコンパレータの提供の有無にかかわらず、ソートマップで管理される順序付けは「equals と一貫性」が必要です (「equals との一貫性」の正確な定義については、Comparable または Comparator を参照)。これは Map インタフェースが equals オペレーションに基づいて定義されるためですが、マップはその compareTo メソッドまたは compare メソッドを使ってすべてのキーを比較するので、このメソッドによって等しいと見なされる 2 つのキーはソートマップから見ても等価です。ソートマップの動作は、その順序付けが equals と一貫性がない場合でも明確に定義されていますが、Map インタフェースの一般規約には準拠していません。
この実装は同期化されません。複数のスレッドが同時にマップにアクセスし、それらのスレッドの少なくとも 1 つが構造的にマップを変更する場合には、外部で同期をとる必要があります。構造的な変更とは、1 つ以上のマッピングを追加または削除するようなオペレーションです。既存のキーに関連付けられている値を変更する処理は、構造的な変更ではありません。通常、構造的な変更は、マップを自然にカプセル化する特定のオブジェクトで同期をとることによって達成されます。そのようなオブジェクトがない場合には、Collections.synchronizedMap メソッドを使ってマップを「ラップ」します。マップへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。
Map m = Collections.synchronizedMap(new TreeMap(...));
このクラスの「コレクションビューメソッド」によって返される反復子は 「フェイルファスト」です。つまり、反復子の作成後に、反復子自体の remove メソッドまたは add メソッド以外の方法でマップが構造的に変更されると、反復子は ConcurrentModificationException をスローします。したがって、同時に変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、直ちにかつ手際よく例外をスローします。
通常、非同期の同時変更がある場合、確かな保証を行うことは不可能なので、反復子のフェイルファストの動作を保証することはできません。フェイルファスト反復子は最善努力原則に基づき、ConcurrentModificationException をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用すべきです」
Map
,
HashMap
,
Hashtable
,
Comparable
,
Comparator
,
Collection
,
Collections.synchronizedMap(Map)
,
直列化された形式入れ子クラスの概要 |
クラス java.util.Map から継承した入れ子クラス |
Map.Entry |
コンストラクタの概要 | |
TreeMap()
キーの自然順序付けに従ってソートされた、新しい空のマップを作成します。 |
|
TreeMap(Comparator c)
指定のコンパレータに従ってソートされた、新しい空のマップを作成します。 |
|
TreeMap(Map m)
指定のマップと同じマッピングを持ち、キーの「自然順序付け」に従ってソートされた新しいマップを作成します。 |
|
TreeMap(SortedMap m)
指定の SortedMap と同じマッピングを持ち、同じ順序付けに従ってソートされた、新しいマップを作成します。 |
メソッドの概要 | |
void |
clear()
TreeMap からすべてのマッピングを削除します。 |
Object |
clone()
TreeMap のインスタンスのシャローコピーを返します。 |
Comparator |
comparator()
マップを順序付けするのに使うコンパレータを返します。 |
boolean |
containsKey(Object key)
マップが指定のキーのマッピングを保持する場合に true を返します。 |
boolean |
containsValue(Object value)
マップが 1 つ以上のキーを指定の値にマップする場合に true を返します。 |
Set |
entrySet()
マップ内に保持されているマッピングのセットビューを返します。 |
Object |
firstKey()
ソートマップ内に現在ある最初 (下端) のキーを返します。 |
Object |
get(Object key)
マップが指定のキーをマップする値を返します。 |
SortedMap |
headMap(Object toKey)
マップの toKey より小さいキーを持つ部分のビューを返します。 |
Set |
keySet()
マップ内に保持されているキーの Set ビューを返します。 |
Object |
lastKey()
ソートマップ内に現在ある最後 (上端) のキーを返します。 |
Object |
put(Object key,
Object value)
指定の値と指定されたキーをこのマップに関連付けます。 |
void |
putAll(Map map)
指定のマップからすべてのマッピングをマップにコピーします。 |
Object |
remove(Object key)
キーのマッピングがあれば TreeMap から削除します。 |
int |
size()
マップ内のキー値マッピングの数を返します。 |
SortedMap |
subMap(Object fromKey,
Object toKey)
マップの fromKey (これを含む) 〜 toKey (これを含まない) のキー範囲を持つ部分のビューを返します。 |
SortedMap |
tailMap(Object fromKey)
マップの fromKey 以上のキーを持つ部分のビューを返します。 |
Collection |
values()
マップ内に保持されている値のコレクションビューを返します。 |
クラス java.util.AbstractMap から継承したメソッド |
equals, hashCode, isEmpty, toString |
クラス java.lang.Object から継承したメソッド |
finalize, getClass, notify, notifyAll, wait, wait, wait |
インタフェース java.util.Map から継承したメソッド |
equals, hashCode, isEmpty |
コンストラクタの詳細 |
public TreeMap()
Comparable
public TreeMap(Comparator c)
c
- このマップをソートするために使用されるコンパレータ。null 値は、キーの「自然順序付け」を使用することを示すpublic TreeMap(Map m)
m
- マッピングがこのマップに配置されるマップ
ClassCastException
- t 内のキーが Comparable でないか、相互に比較可能でない場合
NullPointerException
- 指定されたマップが null の場合public TreeMap(SortedMap m)
m
- マッピングがこのマップに配置され、コンパレータがこのマップのソートに使用される、ソートされたマップ
NullPointerException
- 指定されたソートマップが null の場合メソッドの詳細 |
public int size()
Map
内の size
AbstractMap
内の size
public boolean containsKey(Object key)
Map
内の containsKey
AbstractMap
内の containsKey
key
- マップにあるかどうかが判定されるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic boolean containsValue(Object value)
Map
内の containsValue
AbstractMap
内の containsValue
value
- Map にあるかどうかを判定される値
public Object get(Object key)
Map
内の get
AbstractMap
内の get
key
- 関連付けられた値が返されるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときcontainsKey(Object)
public Comparator comparator()
SortedMap
内の comparator
public Object firstKey()
SortedMap
内の firstKey
NoSuchElementException
- Map が空の場合public Object lastKey()
SortedMap
内の lastKey
NoSuchElementException
- Map が空の場合public void putAll(Map map)
Map
内の putAll
AbstractMap
内の putAll
map
- マップに格納されるマッピング
ClassCastException
- 指定のマップ内のキーまたは値のクラスが、キーまたは値をマップ内に格納させないようにする場合
NullPointerException
- 指定されたマップが null の場合、あるいはこのマップが null キーを許容せず、指定されたマップ内のキーが null の場合public Object put(Object key, Object value)
Map
内の put
AbstractMap
内の put
key
- 指定される値が関連付けられるキーvalue
- 指定されるキーに関連付けられる値
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic Object remove(Object key)
Map
内の remove
AbstractMap
内の remove
key
- マッピングを削除する必要があるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic void clear()
Map
内の clear
AbstractMap
内の clear
public Object clone()
AbstractMap
内の clone
public Set keySet()
Map
内の keySet
AbstractMap
内の keySet
public Collection values()
Map
内の values
AbstractMap
内の values
public Set entrySet()
Map
内の entrySet
AbstractMap
内の entrySet
Map.Entry
public SortedMap subMap(Object fromKey, Object toKey)
このメソッドが返すソートマップは、ユーザが fromKey より小さいキーまたは toKey と同じかこれより大きいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その下端点は含むが上端点は含まない「片側が開いた範囲」を返します。上下端点を含む「閉じた範囲」が必要で、キーの型により直後のキーが計算可能になる場合、単に lowEndpoint 〜 successor(highEndpoint) の部分範囲を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次の慣用法は、キーが low 〜 high の範囲 (上下端点を含む) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。
SortedMap sub = m.submap(low, high+"¥0");同様のテクニックを使って、上下端点のどちらも含まない「開いた範囲」を生成できます。次の慣用法は、キーが low 〜 high の範囲 (上下端点を含まない) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。
SortedMap sub = m.subMap(low+"¥0", high);
SortedMap
内の subMap
fromKey
- subMap の下端点 (これを含む)toKey
- subMap の上端点 (これを含まない)
ClassCastException
- マップのコンパレータを使用して、fromKey と toKey を相互に比較できない場合 (または、マップに自然順序付けを使用するコンパレータがない場合)
IllegalArgumentException
- fromKey が toKey より大きい場合
NullPointerException
- fromKey または toKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic SortedMap headMap(Object toKey)
このメソッドが返すソートマップは、ユーザが toKey と同じかこれより大きいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (上) 端点を含まないビューを返します。この端点を含むビューを必要とし、キーの型により直後のキーが計算可能になる場合、キーは単に successor(highEndpoint) によって限界を設けられた headMap を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次の慣用法は、キーが high と同じかこれより小さい m 内のすべてのキー値マッピングを保持するビューを取得します。
SortedMap head = m.headMap(high+"¥0");
SortedMap
内の headMap
toKey
- headMap の上端点 (これを含まない)
ClassCastException
- toKey がマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、toKey に Comparable が実装されていない場合)
IllegalArgumentException
- このマップ自体が subMap、headMap、または tailMap で、toKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException
- toKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic SortedMap tailMap(Object fromKey)
このメソッドが返すソートマップは、ユーザが fromKey より小さいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (下) 端点を含むビューを返します。この端点を含まないビューを必要とし、要素の型により直後の要素の計算が可能になる場合、値は単に successor(lowEndpoint) によって限界を設けられた tailMap を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次の慣用法は、キーが low より大きい m 内のすべてのキー値マッピングを保持するビューを取得します。
SortedMap tail = m.tailMap(low+"¥0");
SortedMap
内の tailMap
fromKey
- tailMap の下端点 (これを含む)
ClassCastException
- fromKey がマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、fromKey に Comparable が実装されていない場合)
IllegalArgumentException
- このマップ自体が subMap、headMap、または tailMap で、fromKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException
- fromKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないとき
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.