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チェックが不要になり、コードが大幅にすっきりします。
-
JavaにおけるHashMapの内部動作を徹底解説
はじめにJavaでHashMapがどのようにデータを管理しているのか、その内部動作を理解することは、パフォーマンスの最適化やトラブルシューティングにおいて非常に重要です。本記事では、hashCode()とequals()の役割、バケット(bucket)の仕組み、インデックスの計算方法について、サンプルコードを交えながら詳しく解説します。hashCode()メソッドとはJavaでは、hashCode()関数を使用してオブジェクトのハッシュコードを取得します。このメソッドはすべてのクラスの親であるObjectクラスで定義されており、オブジェクト参照のメモリ情報を整数値(int)として返します。ha
-
コマンドプロンプトでJavaプログラムをコンパイル・実行する方法【初心者向けガイド】
多くの統合開発環境(IDE)では、環境の中だけでプログラムのコンパイルと実行が完結しますが、実はコマンドプロンプトを使ってもJavaプログラムをコンパイル・実行することができます。システムにJDK(Java Development Kit)をインストールし、環境変数のPATHを正しく設定しておけば、誰でもコマンドプロンプトからJavaプログラムをコンパイルして実行できるようになります。ここでは、その基本的な手順を順番に解説します。コンパイルから実行までの手順ステップ1: メモ帳やお好みのIDEを使って、Javaプログラムを作成します。ステップ2: 作成したファイルを「Demo.java」という