ホームページ > Java > &#&チュートリアル > Java の HashMap、LinkedHashMap、および TreeMap: 主な違いは何ですか?

Java の HashMap、LinkedHashMap、および TreeMap: 主な違いは何ですか?

Linda Hamilton
リリース: 2024-12-18 07:57:10
オリジナル
226 人が閲覧しました

HashMap, LinkedHashMap, and TreeMap in Java: What are the Key Differences?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート