|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.AbstractMap<K,V> java.util.TreeMap<K,V>
public class TreeMap<K,V>
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 をスローします。したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。「反復子のフェイルファストの動作はバグを検出するためにのみ使用すべきです」
このクラスは、Java Collections Framework のメンバです。
Map
,
HashMap
,
Hashtable
,
Comparable
,
Comparator
,
Collection
,
Collections.synchronizedMap(Map)
,
直列化された形式コンストラクタの概要 | |
---|---|
TreeMap()
キーの自然順序付けに従ってソートされた、新しい空のマップを作成します。 |
|
TreeMap(Comparator<? super K> c)
指定されたコンパレータに従ってソートされた、新しい空のマップを作成します。 |
|
TreeMap(Map<? extends K,? extends V> m)
指定されたマップと同じマッピングを持ち、キーの「自然順序付け」に従ってソートされた新しいマップを作成します。 |
|
TreeMap(SortedMap<K,? extends V> m)
指定された SortedMap と同じマッピングを持ち、同じ順序付けに従ってソートされた、新しいマップを作成します。 |
メソッドの概要 | |
---|---|
void |
clear()
TreeMap からすべてのマッピングを削除します。 |
Object |
clone()
TreeMap のインスタンスのシャローコピーを返します。 |
Comparator<? super K> |
comparator()
マップを順序付けするのに使うコンパレータを返します。 |
boolean |
containsKey(Object key)
マップが指定されたキーのマッピングを保持する場合に true を返します。 |
boolean |
containsValue(Object value)
マップが 1 つ以上のキーを指定された値にマップする場合に true を返します。 |
Set<Map.Entry<K,V>> |
entrySet()
マップ内に保持されているマッピングのセットビューを返します。 |
K |
firstKey()
ソートマップ内に現在ある最初 (下端) のキーを返します。 |
V |
get(Object key)
マップが指定されたキーをマップする値を返します。 |
SortedMap<K,V> |
headMap(K toKey)
マップの toKey より小さいキーを持つ部分のビューを返します。 |
Set<K> |
keySet()
マップ内に保持されているキーの Set ビューを返します。 |
K |
lastKey()
ソートマップ内に現在ある最後 (上端) のキーを返します。 |
V |
put(K key,
V value)
指定された値と指定されたキーをこのマップに関連付けます。 |
void |
putAll(Map<? extends K,? extends V> map)
指定されたマップからすべてのマッピングをマップにコピーします。 |
V |
remove(Object key)
キーのマッピングがあれば TreeMap から削除します。 |
int |
size()
マップ内のキー値マッピングの数を返します。 |
SortedMap<K,V> |
subMap(K fromKey,
K toKey)
マップの fromKey (これを含む) 〜 toKey (これを含まない) のキー範囲を持つ部分のビューを返します。 |
SortedMap<K,V> |
tailMap(K fromKey)
マップの fromKey 以上のキーを持つ部分のビューを返します。 |
Collection<V> |
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<? super K> c)
c
- このマップをソートするために使用されるコンパレータ。null 値は、キーの「自然順序付け」を使用することを示すpublic TreeMap(Map<? extends K,? extends V> m)
m
- マッピングがこのマップに配置されるマップ
ClassCastException
- t 内のキーが Comparable でないか、相互に比較可能でない場合
NullPointerException
- 指定されたマップが null の場合public TreeMap(SortedMap<K,? extends V> m)
m
- マッピングがこのマップに配置され、コンパレータがこのマップのソートに使用される、ソートされたマップ
NullPointerException
- 指定されたソートマップが null の場合メソッドの詳細 |
---|
public int size()
Map<K,V>
内の size
AbstractMap<K,V>
内の size
public boolean containsKey(Object key)
Map<K,V>
内の containsKey
AbstractMap<K,V>
内の containsKey
key
- マップにあるかどうかが判定されるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic boolean containsValue(Object value)
Map<K,V>
内の containsValue
AbstractMap<K,V>
内の containsValue
value
- Map にあるかどうかを判定される値
public V get(Object key)
Map<K,V>
内の get
AbstractMap<K,V>
内の get
key
- 関連付けられた値が返されるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときcontainsKey(Object)
public Comparator<? super K> comparator()
SortedMap<K,V>
内の comparator
public K firstKey()
SortedMap<K,V>
内の firstKey
NoSuchElementException
- Map が空の場合public K lastKey()
SortedMap<K,V>
内の lastKey
NoSuchElementException
- Map が空の場合public void putAll(Map<? extends K,? extends V> map)
Map<K,V>
内の putAll
AbstractMap<K,V>
内の putAll
map
- マップに格納されるマッピング
ClassCastException
- 指定されたマップ内のキーまたは値のクラスが、キーまたは値をマップ内に格納させないようにする場合
NullPointerException
- 指定されたマップが null の場合、あるいはこのマップが null キーを許容せず、指定されたマップ内のキーが null の場合public V put(K key, V value)
Map<K,V>
内の put
AbstractMap<K,V>
内の put
key
- 指定される値が関連付けられるキーvalue
- 指定されるキーに関連付けられる値
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic V remove(Object key)
Map<K,V>
内の remove
AbstractMap<K,V>
内の remove
key
- マッピングを削除する必要があるキー
ClassCastException
- キーがマップ内に現在あるキーと比較できない場合
NullPointerException
- キーが null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic void clear()
Map<K,V>
内の clear
AbstractMap<K,V>
内の clear
public Object clone()
AbstractMap<K,V>
内の clone
Cloneable
public Set<K> keySet()
Map<K,V>
内の keySet
AbstractMap<K,V>
内の keySet
public Collection<V> values()
Map<K,V>
内の values
AbstractMap<K,V>
内の values
public Set<Map.Entry<K,V>> entrySet()
Map<K,V>
内の entrySet
AbstractMap<K,V>
内の entrySet
Map.Entry
public SortedMap<K,V> subMap(K fromKey, K 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<K,V>
内の subMap
fromKey
- subMap の下端点 (これを含む)toKey
- subMap の上端点 (これを含まない)
ClassCastException
- マップのコンパレータを使用して、fromKey と toKey を相互に比較できない場合 (または、マップに自然順序付けを使用するコンパレータがない場合)
IllegalArgumentException
- fromKey が toKey より大きい場合
NullPointerException
- fromKey または toKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic SortedMap<K,V> headMap(K toKey)
このメソッドが返すソートマップは、ユーザが toKey と同じかこれより大きいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (上) 端点を含まないビューを返します。この端点を含むビューを必要とし、キーの型により直後のキーが計算可能になる場合、キーは単に successor(highEndpoint) によって限界を設けられた headMap を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次の慣用法は、キーが high と同じかこれより小さい m 内のすべてのキー値マッピングを保持するビューを取得します。
SortedMap head = m.headMap(high+"\0");
SortedMap<K,V>
内の headMap
toKey
- headMap の上端点 (これを含まない)
ClassCastException
- toKey がマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、toKey に Comparable が実装されていない場合)
IllegalArgumentException
- このマップ自体が subMap、headMap、または tailMap で、toKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException
- toKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないときpublic SortedMap<K,V> tailMap(K fromKey)
このメソッドが返すソートマップは、ユーザが fromKey より小さいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (下) 端点を含むビューを返します。この端点を含まないビューを必要とし、要素の型により直後の要素の計算が可能な場合、単に successor(lowEndpoint) によって限界を設けられた tailMap を指定してください。たとえば、m はそのキーが文字列のソートマップである場合、次の慣用法は、キーが low より大きい m 内のすべてのキーと値のマッピングを保持するビューを取得します。
SortedMap tail = m.tailMap(low+"\0");
SortedMap<K,V>
内の tailMap
fromKey
- tailMap の下端点 (これを含む)
ClassCastException
- fromKey がマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、fromKey に Comparable が実装されていない場合)
IllegalArgumentException
- このマップ自体が subMap、headMap、または tailMap で、fromKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException
- fromKey が null の場合に、マップが自然順序付けを使うとき、あるいはそのコンパレータが null キーを許容しないとき
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。