「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > HashMap の基本を解明する: Java 開発者のための重要な概念

HashMap の基本を解明する: Java 開発者のための重要な概念

2024 年 11 月 6 日に公開
ブラウズ:270

Cracking the Basics of HashMap: Key Concepts for Java Developers

導入

HashMap クラスを理解することは、実際のアプリケーションでもインタビューでも、開発者にとって不可欠です。この投稿では、HashMap でキーと値のペアを挿入、更新、管理する方法を説明します。この知識は、次の記事の基礎にもなります。この記事では、HashSet について詳しく説明し、2 つのコレクションがどのように関連しているかを確認します。


ハッシュマップとは何ですか?

HashMap はデータを キーと値のペア として保存し、効率的な検索、更新、削除を可能にします。以下にいくつかの重要な特徴を示します:

  • キーは一意です: キーがすでに存在する場合、値は置換されます
  • 値は重複可能: 同じ値を異なるキーにマッピングできます。
  • put()、get()、remove() などの操作の平均時間複雑さは O(1).

コード スニペットを使用して、これらの動作をさらに詳しく見てみましょう。


1. put() を使用したキーと値のペアの挿入

put() メソッドは、キーと値のペアをマップに追加します。ただし、キーがすでに存在する場合は、古い値が置き換えられます。

Map map = new HashMap();

// Insert two key-value pairs
map.put(1, 2);
map.put(2, 3);

説明:

ここでは、2 つのエントリ

を挿入します。
  • キー 1 は値 2 にマッピングされます
  • キー 2 は値 3 にマップされます

さて、同じキーで新しい値を挿入しようとするとどうなるでしょうか?


2. 重複キーの処理

// Replacing an existing value
map.put(2, 4); // Key 2 already exists, so the value is replaced.

キー 2 は値 3 とともにすでに存在していましたが、put(2, 4) を呼び出すと、新しい値 4 が古い値を 置き換えます 。これは HashMap.

のデフォルトの動作です。

なぜそれが重要なのか

キーがすでに存在する場合、多くの状況で値を置換したくない場合があります。慎重に扱わないと、データ損失が発生する可能性があります。このような場合は、putIfAbsent() メソッドを使用できます。


3. putIfAbsent() による上書きの防止

// Ensuring value isn't replaced if key exists
map.putIfAbsent(2, 5);

putIfAbsent() メソッドは、指定されたキーがマップ内に まだ存在しない場合にのみ値を挿入します。キー 2 はすでに値 4 に関連付けられているため、ここでのメソッド呼び出しは効果がありません。


4. 最終的な地図を印刷する

System.out.println(map); // Output: {1=2, 2=4}

この出力は、putIfAbsent() が既存の値を上書きしなかったため、キー 2 が値 4 を保持していることを示しています。


主要な方法の概要

  1. put(K key, V value): 指定されたキーの値を 挿入または置換します
  2. putIfAbsent(K key, V value): キーが存在しない場合、値
  3. only挿入します。

結論

HashMap クラスは、キーと値のペアを保存するための Java の強力なツールですが、重複キーでの動作を理解することが重要です。 put() と putIfAbsent() をいつ使用するかを知ると、データ損失を回避し、効率的なコードを作成するのに役立ちます。基本操作の平均時間複雑性が

O(1) であるため、HashMap は、パフォーマンスが重要な多くのタスクにとって頼りになる選択肢です。

次回の投稿もお楽しみに。HashSet と、内部で HashMap を使用して一意性を確保する方法について説明します。


関連記事

  • Java の基礎

  • アレイ面接の必需品

  • Java メモリの基礎

コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/arshisaxena26/cracking-the-basics-of-hashmap-key-concepts-for-java-developers-3ghb?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>
  • Web ページを高速化する
    Web ページを高速化する
    DOM とは何ですか?それは何を食べるのでしょうか? DOM (Document Object Model) は Web ページとその開発の基礎です。これは、HTML および XML ドキュメント用のプログラミング インターフェイスであり、ドキュメントの構造をツリー状のオブジェクト...
    プログラミング 2024 年 11 月 7 日に公開
  • JavaScript での require と import
    JavaScript での require と import
    コーディングを始めたとき、require() を使用してモジュールやインポートを使用して他のファイルをインポートするいくつかの js ファイルを見たことを覚えています。何が違うのか、なぜプロジェクト間で一貫性がないのかがよくわからず、いつも混乱していました。同じことを疑問に思っている場合は、読み続け...
    プログラミング 2024 年 11 月 7 日に公開
  • イメージを使用した Vite/React アプリケーションのデプロイ: 完全ガイド
    イメージを使用した Vite/React アプリケーションのデプロイ: 完全ガイド
    Vite/React アプリケーションを GitHub Pages にデプロイすることはエキサイティングなマイルストーンですが、このプロセスでは、特に画像やアセットを扱う場合、予期せぬ課題が発生することがあります。このブログ投稿では、初期導入から一般的な問題のトラブルシューティング、効果的な解決策の...
    プログラミング 2024 年 11 月 7 日に公開
  • React アプリで API 呼び出しを最適化した方法
    React アプリで API 呼び出しを最適化した方法
    React 開発者として、私たちは、複数の急速な状態変化を API と同期する必要があるシナリオによく直面します。小さな変更ごとに API 呼び出しを行うのは非効率的であり、クライアントとサーバーの両方に負担がかかる可能性があります。ここで、デバウンスと賢明な状態管理が機能します。この記事では、ペイ...
    プログラミング 2024 年 11 月 7 日に公開
  • さあ行こう!
    さあ行こう!
    GO を試す必要がある理由 Go は、高速かつ軽量で静的に型付けされたコンパイル言語で、効率的で信頼性の高いアプリケーションの構築に最適です。そのシンプルさとクリーンな構文により、特に初心者にとって、学習と使用が簡単になります。 Go の優れた機能には、ゴルーチンによる組み込み同時...
    プログラミング 2024 年 11 月 6 日に公開
  • PNG 画像を CSS データ URI の Base64 としてエンコードするにはどうすればよいですか?
    PNG 画像を CSS データ URI の Base64 としてエンコードするにはどうすればよいですか?
    CSS データ URI の PNG 画像に Base64 エンコーディングを使用するデータ URI を使用して PNG 画像を CSS スタイルシートに埋め込むには、PNG データ最初に Base64 形式にエンコードする必要があります。この手法を使用すると、外部画像ファイルをスタイルシート内に直接...
    プログラミング 2024 年 11 月 6 日に公開
  • API 時間別データの応答性の高い JavaScript カルーセル
    API 時間別データの応答性の高い JavaScript カルーセル
    I almost mistook an incomplete solution for a finished one and moved on to work on other parts of my weather app! While working on the carousel that w...
    プログラミング 2024 年 11 月 6 日に公開
  • Web 開発における PHP と JavaScript の主な違いは何ですか?
    Web 開発における PHP と JavaScript の主な違いは何ですか?
    PHP と JavaScript: サーバー側とクライアント側 PHP は JavaScript とは異なる役割を果たします。 PHPはサーバーサイドで動作します。サーバーはアプリケーションを実行します。フォームなどを処理します。フォームを送信すると、PHP がそれを処理します。一...
    プログラミング 2024 年 11 月 6 日に公開
  • C++ で構造体とクラスのメンバーを反復処理して、実行時に名前と値にアクセスするにはどうすればよいですか?
    C++ で構造体とクラスのメンバーを反復処理して、実行時に名前と値にアクセスするにはどうすればよいですか?
    構造体とクラスのメンバーの反復C では、構造体またはクラスのメンバーを反復して名前を取得することができます。そして価値観。これを実現するためのいくつかのアプローチを次に示します。マクロの使用REFLECTABLE マクロを使用して、イントロスペクションを可能にする構造体を定義できます。マクロは、構造...
    プログラミング 2024 年 11 月 6 日に公開
  • 項目 正確な答えが必要な場合は、float と double を避ける
    項目 正確な答えが必要な場合は、float と double を避ける
    float と double の問題: 科学的および数学的計算用に設計されており、2 進浮動小数点演算を実行します。 金銭の計算や正確な答えが必要な状況には適していません。 0.1 などの 10 の負の累乗を正確に表すことができないため、エラーが発生します。 例 1: ドル額を減算する際の計算が正し...
    プログラミング 2024 年 11 月 6 日に公開
  • Go で WebSocket を使用してリアルタイム通信を行う
    Go で WebSocket を使用してリアルタイム通信を行う
    チャット アプリケーション、ライブ通知、共同作業ツールなど、リアルタイムの更新が必要なアプリを構築するには、従来の HTTP よりも高速でインタラクティブな通信方法が必要です。そこで WebSocket が登場します。今日は、アプリケーションにリアルタイム機能を追加できるように、Go で WebSo...
    プログラミング 2024 年 11 月 6 日に公開
  • Python でプロキシを使用して Selenium Webdriver を実行する方法
    Python でプロキシを使用して Selenium Webdriver を実行する方法
    Python でプロキシを使用して Selenium Webdriver を実行するSelenium Webdriver スクリプトを Python スクリプトとしてエクスポートし、コマンド ラインから実行しようとすると、次のような問題が発生する場合があります。使用上の問題 プロキシの場合にエラーが...
    プログラミング 2024 年 11 月 6 日に公開
  • || がいつ行われるか演算子は JavaScript でデフォルトの演算子として機能しますか?
    || がいつ行われるか演算子は JavaScript でデフォルトの演算子として機能しますか?
    || の目的を理解するJavaScript の非ブール オペランドを持つ演算子JavaScript では、|| は演算子は論理 OR 演算子と呼ばれることが多く、通常はブール式を評価するために使用されます。ただし、 || が次のような場合に遭遇する可能性があります。演算子は非ブール値で使用されます...
    プログラミング 2024 年 11 月 6 日に公開
  • Java 23 の新機能を探る
    Java 23 の新機能を探る
    開発者、プログラミング愛好家、学習者の皆様 Java Development Kit (JDK) 23 が正式にリリースされました (2024/09/17 一般提供)。これは Java プログラミング言語の進化におけるもう 1 つの重要なマイルストーンです。この最新のアップデートでは、開発者のエクス...
    プログラミング 2024 年 11 月 6 日に公開
  • ES6 配列の分割: 期待どおりに動作しないのはなぜですか?
    ES6 配列の分割: 期待どおりに動作しないのはなぜですか?
    ES6 配列の構造化: 予期しない動作ES6 では、配列の代入を構造化すると予期しない結果が生じる可能性があり、プログラマは困惑します。そのような例の 1 つを次のコードで示します:let a, b, c [a, b] = ['A', 'B'] [b, c] = ['BB', 'C'] consol...
    プログラミング 2024 年 11 月 6 日に公開

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

Copyright© 2022 湘ICP备2022001581号-3