JavaでMapインターフェースを実装することは非常に重要なタスクです。この目的のために、 TreeMap そして HashMap 。この記事では、TreeMapに焦点を当てます。 次の順序で:
JavaのTreeMapとは何ですか?
JavaのTreeMapは、抽象クラスとともにMapインターフェイスとNavigableMapを実装するために使用されます。マップは、使用されるコンストラクターに応じて、キーの自然な順序に従って、またはマップの作成時に提供されるコンパレーターによってソートされます。これは、キーと値のペアを並べ替えて保存する効率的な方法であることがわかります。
ツリーマップによって維持される格納順序は、明示的なコンパレータに関係なく、他のソートされたマップと同じように等しいものと一致している必要があります。ツリーマップマップが複数のスレッドによって同時にアクセスされ、少なくとも1つのスレッドがマップを構造的に変更する場合、外部で同期する必要があるという意味で、実装は同期されません。
TreeMapsの機能
このクラスは、Javaコレクションフレームワークのメンバーです。
このクラスは、NavigableMap、SortedMapなどのMapインターフェースを実装し、AbstractMapを拡張します。
JavaのTreeMapはnullキー(Mapなど)を許可しないため、NullPointerExceptionがスローされます。ただし、複数のnull値を異なるキーに関連付けることができます。
このクラスのメソッドによって返されるすべてのMap.Entryペアとそのビューは、作成時のマッピングのスナップショットを表します。
Entry.setValueメソッドはサポートしていません。
doubleをintにキャストする方法
覚えておくべき重要なポイント
Mapインターフェースの実装とは別に、Java TreeMapはNavigableMapも実装し、SortedMapインターフェースを間接的に実装します。 TreeMapはAbstractMapクラスも拡張します。
TreeMapエントリは、キーの自然な順序で並べ替えられます。また、注文に使用するコンパレータを提供するコンストラクタも提供します。したがって、キーとしてクラスを使用している場合は、自然な順序付けのためにComparableインターフェースを実装していることを確認してください。これらのメソッドの重要性を理解するには、Javaコレクションのインタビューの質問を確認してください。
Java TreeMapの実装は、containsKey、get、put、およびremove操作のlog(n)時間コストを保証します。
対はJavaを持っています
TreeMapは同期されていないため、スレッドセーフではありません。マルチスレッド環境の場合、Collections.synchronizedSortedMapメソッドを使用してラップ同期を取得できます。
キーセットと値を取得するTreeMapメソッドは、本質的にフェイルファストであるIteratorを返すため、同時変更を行うとConcurrentModificationExceptionがスローされます。
JavaのTreeMapではnullキーを使用できませんが、異なるキーに複数のnull値を関連付けることができます。
TreeMapのコンストラクター
ビルダー | 説明 |
TreeMap() | キーの自然な順序を使用してソートされる空のツリーマップを構築します。 |
TreeMap(コンパレータコンプ) | Comparatorcompを使用してソートされる空のツリーベースのマップを作成します。 |
TreeMap(マップm) | キーの自然な順序を使用してソートされるmからのエントリでツリーマップを初期化します。 |
TreeMap(SortedMap sm) | SortedMap smからのエントリを使用してツリーマップを初期化します。これは、smと同じ順序でソートされます。 |
TreeMapのメソッド
方法 | 説明 |
void clear() | このTreeMapからすべてのマッピングを削除します。 |
オブジェクトclone() | このTreeMapインスタンスの浅いコピーを返します。 |
コンパレータコンパレータ() | このマップの順序付けに使用されるコンパレータを返します。このマップがキーの自然な順序を使用している場合はnullを返します。 |
ブールcontainsKey(オブジェクトキー) | このマップに指定されたキーのマッピングが含まれている場合はtrueを返します。 |
ブールcontainsValue(オブジェクト値) | このマップが1つ以上のキーを指定された値にマップする場合、trueを返します。 |
entrySet()を設定します | このマップに含まれるマッピングのセットビューを返します。 |
オブジェクトfirstKey() | このソートされたマップに現在ある最初の(最も低い)キーを返します。 |
オブジェクトget(オブジェクトキー) | このマップが指定されたキーをマップする値を返します。 |
SortedMap headMap(Object toKey) | キーがtoKeyよりも厳密に小さいこのマップの部分のビューを返します。 |
keySet()を設定します | このマップに含まれるキーのセットビューを返します。 |
オブジェクトlastKey() | このソートされたマップに現在ある最後の(最も高い)キーを返します。 |
オブジェクトput(オブジェクトキー、オブジェクト値) | このマップで、指定された値を指定されたキーに関連付けます。 |
void putAll(マップマップ) | 指定されたマップからこのマップにすべてのマッピングをコピーします。 |
オブジェクト削除(オブジェクトキー) | 存在する場合、このTreeMapからこのキーのマッピングを削除します。 |
int size() | このマップ内のKey-Valueマッピングの数を返します。 |
SortedMap subMap(Object fromKey、Object toKey) | キーがfromKey(包括的)からtoKey(排他的)の範囲であるこのマップの部分のビューを返します。 |
SortedMap tailMap(Object fromKey) | キーがfromKey以上であるこのマップの部分のビューを返します。 |
コレクションvalues() | このマップに含まれる値のコレクションビューを返します。 |
JavaでのTreeMapの例
import java.util.TreeMap public class TreeMapMain {public static void main(String args []){//国をキー、大文字を値とするTreeMap // TreeMapは要素をキーの自然な順序で格納します。 TreeMap countryCapitalMap = new TreeMap()countryCapitalMap.put( 'India'、 'Delhi')countryCapitalMap.put( 'Japan'、 'Tokyo')countryCapitalMap.put( 'France'、 'Paris')countryCapitalMap.put( 'Russia' 、 'Moscow')System.out.println( '-----------------------------')// keySet(を使用してTreeMapを反復する)およびfor each loop System.out.println( 'Iterating TreeMap Using keySet()and for each loop')for(String countryKey:countryCapitalMap.keySet()){System.out.println( 'Country:' + countryKey + 'および大文字: '+ countryCapitalMap.get(countryKey))} System.out.println(' ----------------------------- ' )}}
出力:
これで、このTreeMap inJavaの記事は終わりです。 C 一体 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。
質問がありますか?この「TreeMapinJava」ブログのコメントセクションでそのことを伝えてください。できるだけ早くご連絡いたします。