モジュール java.base
パッケージ java.util

クラスTreeMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.TreeMap<K,V>
型パラメータ:
K - このマップで保持されるキーの型
V - マップされる値の型
すべての実装されたインタフェース:
Serializable, Cloneable, Map<K,V>, NavigableMap<K,V>, SequencedMap<K,V>, SortedMap<K,V>

public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable
赤 - 黒ツリーに基づくNavigableMap実装です。 マップは、使用するコンストラクタに応じて、そのキーの自然順序付けに従って、またはマップ作成時に提供されるComparatorによってソートされます。

この実装は、containsKeygetputremoveの各オペレーションに保証済みのlog(n)時間コストを提供します。 アルゴリズムは、Cormen、Leiserson、Rivestの「Introduction to Algorithms」のものに手を加えています。

ソート・マップの場合と同様に、あるツリー・マップがMapインタフェースを正しく実装するには、明示的なコンパレータが提供されているかどうかにかかわらず、そのツリー・マップによって維持される順序付けがequalsとの一貫性のあるものでなければいけないことに注意してください。 (equalsとの一貫性の正確な定義については、ComparableまたはComparatorを参照してください。) これはMapインタフェースがequalsオペレーションに基づいて定義されるためですが、ソート・マップはその compareTo (またはcompare)メソッドを使用してすべてのキー比較を実行するので、このメソッドによって等しいと見なされる2つのキーは、ソート・マップから見ても同じものです。 ソート・マップの動作は、その順序付けがequalsと一貫性がない場合でも明確に定義されていますが、Mapインタフェースの一般規約には準拠していません。

この実装はsynchronizedされません。 複数のスレッドが並行してマップにアクセスし、それらのスレッドの少なくとも1つが構造的にマップを変更する場合には、外部で同期をとる必要があります 構造的な変更とは、1つ以上のマッピングを追加または削除するようなオペレーションです。既存のキーに関連付けられている値を変更する処理は、構造的な変更ではありません。 これは通常、マップを自然にカプセル化する一部のオブジェクトでsynchronizedすることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedSortedMapメソッドを使用してマップを「ラップ」することをお薦めします。 マップが誤ってsynchronizedなしでアクセスされるのを防ぐために、作成時に行うことをお薦めします。

   SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

このクラスのすべてのコレクション・ビュー・メソッドによって返されるコレクションのiteratorメソッドによって返されるイテレータは、フェイルファストです。 イテレータの作成後に、イテレータ自体のremoveメソッド以外の方法でマップが構造的に変更されると、イテレータはConcurrentModificationExceptionをスローします。 このように、並行して変更が行われると、イテレータは、将来の予測できない時点において予測できない動作が発生する危険を回避するために、ただちにかつ手際よく例外をスローします。

通常、非同期の並行変更がある場合、確かな保証を行うことは不可能なので、イテレータのフェイルファストの動作を保証することはできません。 フェイルファスト・イテレータは、ベスト・エフォート・ベースでConcurrentModificationExceptionをスローします。 したがって、正確を期すためにこの例外に依存するプログラムを書くことは誤りです。イテレータのフェイルファストの動作はバグを検出するためにのみ使用すべきです。

メソッドceilingEntry(K)firstEntry()floorEntry(K)higherEntry(K)lastEntry()lowerEntry(K)pollFirstEntry()およびpollLastEntry()は、コール時点でのマッピングのスナップショットを表すMap.Entryインスタンスを返します。 オプションのsetValueメソッドを介した基礎となるマップの変更はサポートされていません。

このクラスのputFirstおよびputLastメソッドは、UnsupportedOperationExceptionをスローします。 マッピングの出現順序は比較メソッドによって決定されるため、明示的な配置はサポートされていません。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.2
関連項目: