logo

ハッシュマップとツリーマップの違い

ジャワ ハッシュマップ そして ツリーマップ どちらも Java Collections フレームワークのクラスです。 Java Map 実装は通常、バケット化されたハッシュ テーブルとして機能します。バケットが大きくなりすぎると、バケットは次のノードに変換されます。 ツリーノード 、それぞれの構造は次のものと同様です。 java.util.ツリーマップ

ハッシュマップ

HashMap の実装 マップ、複製可能 そして シリアル化可能 インターフェース。伸びる 抽象地図 クラス。に属します java.util パッケージ。

パブリック Java とプライベート Java
  • HashMap にはキーに基づく値が含まれます。
  • 単一の null キーと複数の null 値を持つことができます。
  • HashMap は反復中に順序を維持しません。
  • ユニークな要素が含まれています。
  • ハッシュの原理に基づいて動作します。

ツリーマップ

TreeMap クラスの拡張 抽象地図 クラスと実装 ナビゲート可能なマップクローン可能 、 そして シリアル化可能 インターフェース。 TreeMap はその一例です。 ソートマップ 。これは、キーの順序がソートされることを意味する、赤黒ツリーによって実装されます。

  • TreeMap には、キーに基づく値も含まれます。
  • TreeMap はキーによってソートされます。
  • ユニークな要素が含まれています。
  • null キーを含めることはできませんが、複数の null 値を含めることはできません。
  • キーは昇順に並んでいます。
  • オブジェクトをツリー構造に格納します。

HashMap と TreeMap の類似点

    ハッシュマップそして ツリーマップ クラスが実装する クローン可能 そして シリアル化可能 インターフェース。
  • どちらのクラスも延長します 抽象地図 クラス。
  • Map は、次の情報を格納するオブジェクトです。 キーと値 ペア。キーと値のペアでは、各キーは一意ですが、その値は異なる場合があります。 重複
  • どちらのクラスも、からのマッピングを表します。 価値観
  • どちらのマップもそうではありません 同期した
  • 地図の使用 置く() マップに要素を追加するメソッド。
  • イテレータは ConcurrentModificationException マップが何らかの方法で変更された場合。

HashMap と TreeMap の主な違いは次のとおりです。

ハッシュマップ は反復順序を保持しませんが、 ツリーマップ を使用して順序を保存します 比較対象() 方法または コンパレータ TreeMap のコンストラクターで設定されます。

次の表では、HashMap と TreeMap の違いについて説明します。

基礎 ハッシュマップ ツリーマップ
意味 ジャワ ハッシュマップ ハッシュテーブルベースの Map インターフェイスの実装です。 ジャワ ツリーマップ は、Map インターフェイスのツリー構造ベースの実装です。
インターフェースの実装 HashMap の実装 マップ、複製可能 、 そして シリアル化可能 インターフェース。 TreeMap の実装 NavigableMap、複製可能 、 そして シリアル化可能 インターフェース。
Null キー/値 HashMap では、 シングル nullキーと 複数 NULL 値。 ツリーマップでは許可されていません ヌル キーが存在する可能性があります 複数 NULL 値。
同種/異種 HashMap はキーの並べ替えを実行しないため、異種の要素を許可します。 TreeMap では、ソートにより同種の値をキーとして使用できます。
パフォーマンス ハッシュマップは もっと早く TreeMap よりも、get() や put() などの基本操作に対して O(1) の定数時間パフォーマンスが提供されるためです。 ツリーマップは 遅い HashMap と比較すると、add()、remove()、contains() などのほとんどの操作で O(log(n)) のパフォーマンスが得られるためです。
データ構造 HashMap クラスは ハッシュ表 TreeMap は内部的に 赤、黒 ツリー。これは自己平衡型の二分探索ツリーです。
比較方法 それは使用しています 等しい() の方法 物体 キーを比較するクラス。 Map クラスの equals() メソッドはこれをオーバーライドします。 それは、 比較対象() キーを比較するメソッド。
機能性 HashMap クラスには次のような基本的な関数のみが含まれています get()、put()、KeySet() 、など。 TreeMap クラスには次のような関数が含まれているため、機能が豊富です。 tailMap()、firstKey()、lastKey()、pollFirstEntry()、pollLastEntry()
要素の順序 HashMap は順序を維持しません。 要素は次のようにソートされます。 自然な秩序 (上昇)。
用途 HashMap は、ソートされた順序でキーと値のペアを必要としない場合に使用する必要があります。 TreeMap は、ソートされた (昇順) 順序でキーと値のペアが必要な場合に使用する必要があります。

ハッシュマップとツリーマップの例

次の例では、HashMap の要素がランダムな順序であるのに対し、TreeMap の要素は昇順に配置されていることがわかります。

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

出力:

ハッシュマップとツリーマップの違い