Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでキーを指定してHashMapの値を更新する方法

この記事では、キーを指定してHashMapの値を更新する方法を解説します。JavaのHashMapは、Mapインターフェースをハッシュテーブルベースで実装したクラスであり、キーと値のペア(エントリー)を管理するコレクションです。

まず、実際の動作イメージを確認しておきましょう。

入力と出力の例

入力:

Input HashMap: {Java=1, Scala=2, Python=3}

期待される出力:

The HashMap with the updated value is: {Java=1, Scala=12, Python=3}

このように、キー「Scala」に対応する値だけが「2」から「12」へ更新され、他の要素はそのまま維持されます。

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 必要な変数を宣言する
ステップ3 - 値を定義する
ステップ4 - putメソッドを使ってHashMapを作成し、要素を初期化する
ステップ5 - コンソールにHashMapの内容を表示する
ステップ6 - getメソッドでキーを指定し、対象の値を取得する
ステップ7 - 取得した値に任意の値を加算する
ステップ8 - 更新後の値をコンソールに表示する
ステップ9 - 処理を終了する

例1:mainメソッドにすべての処理を記述する場合

この例では、必要な一連の操作をすべてmainメソッド内にまとめて記述します。

import java.util.HashMap;
public class Demo {
   public static void main(String[] args) {
      System.out.println("The required packages have been imported");
      HashMap<String, Integer> input_map = new HashMap<>();
      input_map.put("Java", 1);
      input_map.put("Scala", 2);
      input_map.put("Python", 3);
      System.out.println("The HashMap is defined as: " + input_map);
      int value = input_map.get("Scala");
      value = value + 10;
      input_map.put("Scala", value);
      System.out.println("\nThe HashMap with the updated value is: " + input_map);
   }
}

出力

The required packages have been imported
The HashMap is defined as: {Java=1, Scala=2, Python=3}

The HashMap with the updated value is: {Java=1, Scala=12, Python=3}

ポイントは、get()で値を取り出し、put()で同じキーに対して新しい値を上書きするという流れです。HashMapでは同一キーへのputは既存の値を置き換えるため、これだけで更新が完了します。

例2:オブジェクト指向スタイルでメソッドに分割する場合

この例では、更新処理を独立したメソッドとしてカプセル化し、オブジェクト指向プログラミングの形式で実装します。

import java.util.HashMap;
class Demo {
   static void update(HashMap<String, Integer> input_map, String update_string){
      int value = input_map.get(update_string);
      value = value + 10;
      input_map.put("Scala", value);
      System.out.println("\nThe HashMap with the updated value is: " + input_map);
   }
   public static void main(String[] args) {
      System.out.println("The required packages have been imported");
      HashMap<String, Integer> input_map = new HashMap<>();
      input_map.put("Java", 1);
      input_map.put("Scala", 2);
      input_map.put("Python", 3);
      System.out.println("The HashMap is defined as: " + input_map);
      String update_string = "Scala";
      update(input_map, update_string);
   }
}

出力

The required packages have been imported
The HashMap is defined as: {Java=1, Scala=2, Python=3}

The HashMap with the updated value is: {Java=1, Scala=12, Python=3}

補足:merge()メソッドでより簡潔に書く方法

Java 8以降では、merge()メソッドを使えば「値の取得・加算・再登録」を1行で実現できます。

input_map.merge("Scala", 10, Integer::sum);

第1引数にキー、第2引数に加算する値、第3引数に既存値と新規値を結合する関数を渡します。指定したキーが存在しない場合でも第2引数の値がそのまま登録されるため、nullチェックが不要になり、コードが大幅にすっきりします。

  1. JavaにおけるHashMapの内部動作を徹底解説

    はじめにJavaでHashMapがどのようにデータを管理しているのか、その内部動作を理解することは、パフォーマンスの最適化やトラブルシューティングにおいて非常に重要です。本記事では、hashCode()とequals()の役割、バケット(bucket)の仕組み、インデックスの計算方法について、サンプルコードを交えながら詳しく解説します。hashCode()メソッドとはJavaでは、hashCode()関数を使用してオブジェクトのハッシュコードを取得します。このメソッドはすべてのクラスの親であるObjectクラスで定義されており、オブジェクト参照のメモリ情報を整数値(int)として返します。ha

  2. コマンドプロンプトでJavaプログラムをコンパイル・実行する方法【初心者向けガイド】

    多くの統合開発環境(IDE)では、環境の中だけでプログラムのコンパイルと実行が完結しますが、実はコマンドプロンプトを使ってもJavaプログラムをコンパイル・実行することができます。システムにJDK(Java Development Kit)をインストールし、環境変数のPATHを正しく設定しておけば、誰でもコマンドプロンプトからJavaプログラムをコンパイルして実行できるようになります。ここでは、その基本的な手順を順番に解説します。コンパイルから実行までの手順ステップ1: メモ帳やお好みのIDEを使って、Javaプログラムを作成します。ステップ2: 作成したファイルを「Demo.java」という