「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > HashMap、LinkedHashMap、または TreeMap: どの Java マップを使用する必要がありますか?

HashMap、LinkedHashMap、または TreeMap: どの Java マップを使用する必要がありますか?

2024 年 12 月 21 日に公開
ブラウズ:227

HashMap, LinkedHashMap, or TreeMap: Which Java Map Should I Use?

Java の HashMap、LinkedHashMap、および TreeMap の違いを理解する

HashMap、LinkedHashMap、および TreeMap はすべて、Java の Map インターフェイスの実装です。 Java と同じですが、動作と使用例が異なります。それらの主な違いを見てみましょう。

1.反復順序

  • HashMap: 保証された反復順序はありません。キーと値は任意の順序で返すことができます。
  • TreeMap: キーと値は、自然な順序または提供された Comparator によって昇順に並べ替えられます。
  • LinkedHashMap: キーと値は元の順序で返されます。挿入されました。

2.パフォーマンス

  • Get/Put/Remove/ContainsKey:

    • ハッシュマップ: O(1)
    • ツリーマップ: O(log(n))
    • リンクされたハッシュマップ: O(1)

3.インターフェイス

  • HashMap: Map インターフェイスのみを実装します。
  • TreeMap: NavigableMap、Map、および SortedMap を実装します。 Interfaces.
  • LinkedHashMap: Map インターフェイスのみを実装します。

4. Null Values/Keys

  • HashMap: Null キーと Null 値の両方を許可します。
  • TreeMap: Null 値のみを許可します。
  • LinkedHashMap: Null キーと値。

5.フェイルファスト動作

  • HashMap: フェイルファスト動作は、同時変更が存在するイテレータに対して保証されません。
  • ツリーマップ: 同じHashMap.
  • LinkedHashMap: HashMap.

6と同じ。実装

  • HashMap: キーと値のペアを保存するためにバケットを使用します。
  • TreeMap: 赤黒ツリーを使用します。ソートされたキーを維持するため。
  • LinkedHashMap:二重リンク バケットを使用して、挿入順序を保持します。

7.同期

  • HashMap: 実装は同期されていません。
  • TreeMap: 実装は同期されていませんsynchronized.
  • LinkedHashMap: 実装は同期されていません。

8. Hashtables

Hashtables は Map インターフェイスのレガシー実装であり、強力に同期されますが、HashMap ほど効率的ではありません。一般に、ほとんどのユースケースでは、Hashtable ではなく HashMap を使用することをお勧めします。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3