HashMap、LinkedHashMap、TreeMap の違いを調べる
Java では、これら 3 つのデータ構造は、データの整理とアクセスにさまざまなアプローチを提供します。それぞれが独自の
HashMap:
HashMap は効率を優先し、データの迅速な取得と保存を可能にします。特定の順序は維持されず、代わりに、ほとんどの操作で一定時間のパフォーマンスを提供するハッシュ テーブルの実装に重点を置いています。
LinkedHashMap:
LinkedHashMap は、次の利点を組み合わせています。 HashMap と LinkedList、要素の挿入順序を保持します。二重リンクのリスト構造を採用しており、データへの高速かつ順序付けられたアクセスが可能です。
TreeMap:
TreeMap は、キーを昇順で維持する並べ替えられたインターフェイスを提供します。注文。 Red-Black ツリー データ構造に依存しているため、要素の検索、挿入、削除などの操作の対数的な時間計算量が可能になります。
Java のハッシュテーブル:
ハッシュテーブルは、現在では一般的に使用されていませんが、Java では HashMap よりも前に使用されており、ハッシュベースの実装という点で多くの類似点を共有していました。これらは同期され、スレッドの安全性が確保されていますが、追加のオーバーヘッドが発生します。
例:
次のスニペットを考えてみましょう。これは、3 つの出力の違いを示しています。構造:
Map<String, String> m1 = new HashMap<>(); SortedMap<String, String> sm = new TreeMap<>(); LinkedHashMap<String, String> lm = new LinkedHashMap<>(); // Insert elements into all three maps m1.put("map", "HashMap"); m1.put("schildt", "java2"); m1.put("mathew", "Hyden"); m1.put("schildt", "java2s"); sm.put("map", "TreeMap"); sm.put("schildt", "java2"); sm.put("mathew", "Hyden"); sm.put("schildt", "java2s"); lm.put("map", "LinkedHashMap"); lm.put("schildt", "java2"); lm.put("mathew", "Hyden"); lm.put("schildt", "java2s"); // Output the keysets and values from each map print(m1.keySet()); print(m1.values()); print(sm.keySet()); print(sm.values()); print(lm.keySet()); print(lm.values());
出力:
HashMap (順序なし):
[map, schildt, mathew, schildt] [HashMap, java2, Hyden, java2s]
TreeMap (ソート済み):
[map, mathew, schildt, schildt] [TreeMap, Hyden, java2, java2s]
LinkedHashMap (挿入順):
[map, schildt, mathew, schildt] [LinkedHashMap, java2, Hyden, java2s]
以上がJava の HashMap、LinkedHashMap、および TreeMap: 主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。