Java は、依存関係を最小限に抑えて注文を実装するためのクラス指向プログラミング言語です。 Java のマップ インターフェイスは、キーとその値の関係を表します。 Map 実装のいくつかのグループが Map インターフェイスを維持します。
HashMap と LinkedHashMap は、Java の XNUMX つのよく使用される Map 実装です。 この XNUMX つの類似点は、同期していないことです。 彼らはパフォーマンスにも類似点があります。 しかし、この XNUMX つの違いは何でしょうか?
主要な取り組み
- HashMap はキーと値のペアを格納し、null 値を許可するコレクションですが、LinkedHashMap は挿入順序を維持します。
- HashMap は頻繁な挿入と削除のパフォーマンスを向上させますが、LinkedHashMap は反復順序が重要なアプリケーションにより適しています。
- LinkedHashMap は、その順序付けメカニズムにより、HashMap よりもわずかに多くのメモリを使用します。
HashMap と LinkedHashMap の比較
HashMap には、ハッシュ テーブルを使用して格納される要素があり、要素の挿入、削除、取得などの操作で一定時間のパフォーマンスが可能になります。 LinkedHashMap は二重リンク リストを使用して要素の順序を維持するため、HashMap よりもパフォーマンスがわずかに遅くなります。
ハッシュマップは ゲレンデマップ AbstractMap クラスを使用し、それを拡張して、同じクラスに属する継承のコレクションの作成を支援する Java の実装。 入力された要素には順序がなく、入力された順序も保存されません。
LinkedHashMap は、HashMap のサブクラスである別の Map 実装です。 これらにはキーの挿入順序があるため、挿入とアクセスの順序が重要な領域に適用されます。 また、HashMap よりも多くのメモリを備えています。
比較表
比較のパラメータ | ハッシュマップ | LinkedHashmap |
---|---|---|
意味 | これは、AbstractMap クラスを使用する Java Map 実装であり、継承のコレクションの作成に役立ちます。 | これは Java Map の一種でもあり、Map の Hashtable と Linked List を実装する HashMap のサブクラスです。 |
要素 | HashMap に入力された要素が順番どおりではありません。 | 要素はキーの挿入順であることが知られています。 |
注文 | 要素が入力された順序は、HashMap では保持されません。 | これらはキーの挿入順であるため、要素を入力する順序は保持されます。 |
データ構造 | これらはバケットのリストとして保存され、Map インターフェイスのハッシュテーブルとして実装されます。 | LinkedHashMap には、そこに格納されているすべてのリストを実行する二重リンク リストがあります。 |
検索 | HashMap に格納されているリストに対して、このようなタスクを取得または実行するのは簡単です。 | LinkedHashMap へのエントリの取得、削除、または追加は、HashMap よりも困難です。 |
アプリケーション | 検索しやすい場所やその他の一般的な目的で使用されます。 | これは、LRU キャッシュなど、挿入順序やアクセス順序が重要な場所に適用または使用されます。 |
ハッシュマップとは?
HashMap は、AbstractMap を実装および拡張して、同じクラスに属する継承のコレクションの作成を支援する Map 実装です。 このクラスを使用すると、キーとその値を保存して Map インターフェイスを形成できます。
HashMap は同期されません。 null 値も格納できますが、null キーは XNUMX つだけです でなければなりません 定義されています。 複数の null キーでは機能しません。 これは、保存されるキーが一意でなければならないためでもあります。
重複したものが保存されている場合でも、リスト内の元のものに置き換えられます。 これを他のマップ実装グループと区別する特徴は、キーを入力する順序がなく、入力された順序も保存しないことです。
データ構造は HashMap から簡単に取得できます。 取得したデータは簡単に変更、追加、削除することもできます。 したがって、それらの主な用途は、高速な検索プロセスやその他の一般的な目的を必要とする場所にあります。
LinkedHashMap とは何ですか?
LinkedHashMap もマップ実装グループです。 これらは HashMap のサブグループですが、HashMap 自体を拡張および実装し、AbstractMap に拡張し、さらにマップ インターフェイスに拡張します。
LinkedHashMap も同期またはリンクされていません。 入力された値は一意である必要がありますが、リスト内に複数の null 値を含めることはできますが、null キーは XNUMX つだけです。
このマップの実装では、キーは順番に入力されます。つまり、キー挿入順序と呼ばれるものです。 入力されたキーの順序も同様に保持されます。
これは、すべてのリストを貫く二重リンク リストによって無視され、維持されます。これは、二重リンク リストが順序を維持し、挿入順序とアクセス順序が重要な領域でのアプリケーションを維持するためです。
HashMap と LinkedHashMap の違い
- ハッシュマップが人気 Java AbstractMap クラスを使用し、それを拡張して AbstractMap の継承コレクションの作成を支援できるマップ実装。 LinkedHashMap は HashMap のサブクラスであり、HashMap を拡張して Map の Linked List を実装します。
- HashMap に入力される要素には特定の順序はありませんが、LinkedHashMap はキーの挿入順序に従います。
- 主な違いは、XNUMX つのマップの順序が維持されていることです。 HashMap は、キーまたは要素が入力された順序を保持しません。 一方、LinkedHashMap はキーの挿入順序に従うため、要素が入力された順序が保持されます。
- HashMap のデータ構造は、Hashtable が実装されたバケットのリストとして保存されます。 エントリ数が一定数を超える場合は、バランスのとれた形式に切り替えられます。 一方、LinkedHashMap には、データ構造を管理するために保存されているすべてのリストを実行する二重リンク リストがあります。
- HashMap では、データ エントリの削除や追加などの機能の取得と実行が簡単です。 ただし、LinkedHashMap で同じ機能を実行するのは、HashMap よりも困難です。
- データ エントリの取得が簡単なため、HashMap は高速なデータ取得やその他の一般的な目的に使用されます。 一方、LinkedHashMap は、LRU キャッシュなど、挿入順序やアクセス順序が重要な場合に使用されます。
最終更新日 : 11 年 2023 月 XNUMX 日
Sandeep Bhandari は、Thapar University (2006) でコンピューター工学の学士号を取得しています。 彼はテクノロジー分野で 20 年の経験があります。 彼は、データベース システム、コンピュータ ネットワーク、プログラミングなど、さまざまな技術分野に強い関心を持っています。 彼の詳細については、彼のウェブサイトで読むことができます バイオページ.
違いを説明するための実例が強調されていないのが少し残念です。そうすれば投稿にさらに価値が付加されるでしょう。
あなたがどこから来たのかわかります、ブレイノルズ。実践的な例は、概念をより深く理解するのに常に役立ちます。
特に比較表がとても参考になりました。主な違いを簡潔にまとめました。
リンプソンさん、これには同意できませんでした。比較表はこの投稿の際立った構成要素でした。
この投稿では、HashMap と LinkedHashMap について包括的に理解しました。共有していただきありがとうございます!
よく言った、ティナ 92!この投稿の情報の深さは本当に賞賛に値します。
この比較はわかりやすく、よく構成されていると思いました。これは、HashMap と LinkedHashMap を理解したい人にとって素晴らしいリソースです。
そうだね、ジョエル・クラーク。この分野の知識を広げたい人にとっては貴重なリソースです。
HashMap と LinkedHashMap を区別するための著者のアプローチは分析的で徹底的でした。賞賛に値する作品です!
よく言った、Henry54。この投稿の分析的な性質は、これらの実装間の違いを明確にするという点で際立っています。
そうだね、ヘンリー54。この投稿で採用された分析アプローチは、HashMap と LinkedHashMap の間の微妙な違いを明らかにします。
この投稿は非常に有益です。 HashMap と LinkedHashMap の違いをよりよく理解できるようになりました。
そうだね、ハグリフィス。比較表は、違いを理解するのに特に役立ちました。
興味深い読み物です。 HashMap と LinkedHashMap の違いの詳細な内訳に感謝します。
同意します、スデイビス。この投稿では、これらの実装間のいくつかの複雑な詳細が明確になりました。
明確かつ簡潔な説明をありがとうございます!これにより、HashMap と LinkedHashMap の違いが非常に簡単に理解できるようになります。
同意します、イザベル!ここで提供される詳細な比較にも感謝します。
情報は適切に提示されていましたが、コンテキストを追加するために HashMap と LinkedHashMap の両方の簡単な履歴を含めると、この投稿にメリットがあると思います。
それは興味深い指摘ですね、エベル。歴史的背景を提供すると、概念の全体的な理解を高めることができます。
あなたの言い分はわかります、エベル。歴史的背景は、実際、これらの実装のより全体的な見方に貢献する可能性があります。
HashMap と LinkedHashMap の両方の説明は非常に明確でした。著者は違いをうまく表現しました。
まさに、ライアン・クーパー。この投稿では、これらの実装間の微妙な違いを効果的に説明しています。
完全に同意します、ライアン・クーパー。説明が明瞭なので、読む価値がありました。