|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.util.AbstractMap | +--java.util.TreeMap
SortedMap インタフェースの実装に基づく Red-Black ツリーです。このクラスでは、マップが確実にキーの昇順でソートされます。ただし、ソート方法はコンストラクタにより異なり、キーのクラスの「自然順序付け」(Comparable を参照) によりソートされる場合と、作成時に提供されるコンパレータによってソートされる場合があります。
この実装は、containsKey、get、put、remove の各オペレーションに保証済みの log(n) 時間コストを提供します。アルゴリズムは、Corman、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 をスローします。したがって、同時変更が行われると、反復子は、将来の予測できない時点において予測できない動作が発生する危険を回避するために、速やかにかつクリーンに失敗します。
Map
,
HashMap
,
Hashtable
,
Comparable
,
Comparator
,
Collection
,
Collections.synchronizedMap(Map)
, 直列化された形式コンストラクタの概要 | |
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 |
コンストラクタの詳細 |
public TreeMap()
Comparable
public TreeMap(Comparator c)
public TreeMap(Map m)
public TreeMap(SortedMap m)
メソッドの詳細 |
public int size()
public boolean containsKey(Object key)
key
- マップ内にあるかどうかが判定されるキーpublic boolean containsValue(Object value)
value
- Map 内にあるかどうかが判定される値public Object get(Object key)
key
- 関連付けられている値が返されるキーcontainsKey(Object)
public Comparator comparator()
public Object firstKey()
public Object lastKey()
public void putAll(Map map)
map
- マップに格納されるマッピングpublic Object put(Object key, Object value)
key
- 指定の値が関連付けられるキーvalue
- 指定のキーに関連付けられる値public Object remove(Object key)
public void clear()
public Object clone()
public Set keySet()
public Collection values()
public Set 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);
fromKey
- subMap の下限点 (これを含む)toKey
- subMap の上限点 (これを含まない)public SortedMap headMap(Object toKey)
このメソッドが返すソートマップは、ユーザが toKey と同じかこれより大きいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (上) 限点を含まないビューを返します。この限点を含むビューを必要とし、キーの型が直後のキーの計算を可能にしている場合、キーは単に successor(highEndpoint) によって限界を設けられた headMap を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次のイディオムは、キーが high と同じかこれより小さい m 内のすべてのキー値マッピングを保持するビューを取得します。
SortedMap head = m.headMap(high+"¥0");
toKey
- headMap の上限点 (これを含まない)public SortedMap tailMap(Object fromKey)
このメソッドが返すソートマップは、ユーザが fromKey より小さいキーを挿入しようとすると IllegalArgumentException をスローします。
注: このメソッドは常に、その (下) 限点を含むビューを返します。この限点を含まないビューを必要とし、要素の型が直後の要素の計算を可能にしている場合、値は単に successor(lowEndpoint) によって限界を設けられた tailMap を指定してください。たとえば、m が文字列のキーを持つソートマップである場合、次のイディオムは、キーが high より大きい m 内のすべてのキー値マッピングを保持するビューを取得します。
SortedMap tail = m.tailMap(low+"¥0");
fromKey
- tailMap の下限点 (これを含む)
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |