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

JavaでHashMapを反復処理する方法をわかりやすく解説


この記事では、JavaでHashMapを反復処理する方法について詳しく解説します。JavaのHashMapは、Mapインターフェースをハッシュテーブルベースで実装したクラスであり、キーと値のペア(key-value)を管理するコレクションです。格納されたデータを一つずつ取り出して表示・加工するケースは非常によくあるため、反復処理の書き方はぜひマスターしておきたい基本テクニックです。

以下に具体的な実装例を示します。

入力データの想定:

入力ハッシュマップ: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

期待される出力:

ハッシュマップのキー: Java, JavaScript, Mysql, Python,
ハッシュマップの値: Enterprise, Frontend, Backend, ML/AI,

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 必要な変数を宣言する
ステップ3 - 格納する値を定義する
ステップ4 - 文字列型のハッシュマップを作成し、「put」メソッドで要素を初期化する
ステップ5 - ハッシュマップの内容をコンソールに表示する
ステップ6 - ハッシュマップの要素を反復処理し、「keySet」メソッドで各キーを取得する
ステップ7 - 取得した結果をコンソールに表示する
ステップ8 - 処理を終了する

例1:すべての処理をmainメソッドにまとめる場合

まずは、すべての操作を「main」メソッドの中に直接記述するシンプルな例から見ていきましょう。

import java.util.HashMap;
import java.util.Map.Entry;
public class Demo {
    public static void main(String[] args) {
        System.out.println("The required packages have been imported");
        HashMap<String, String> input_map = new HashMap<>();
        input_map.put("Java", "Enterprise");
        input_map.put("Python", "ML/AI");
        input_map.put("JavaScript", "Frontend");
        input_map.put("Mysql", "Backend");
        System.out.println("The HashMap is defined as: " + input_map);
        System.out.print("\nThe keys of the Hashmap are: ");
        for(String key: input_map.keySet()) {
            System.out.print(key);
            System.out.print(", ");
        }
        System.out.print("\nThe Values of the Hashmap are: ");
        for(String value: input_map.values()) {
            System.out.print(value);
            System.out.print(", ");
        }
    }
}

出力

The required packages have been imported
The HashMap is defined as: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

The keys of the Hashmap are: Java, JavaScript, Mysql, Python,
The Values of the Hashmap are: Enterprise, Frontend, Backend, ML/AI,

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

次に、各操作を独立したstaticメソッドとしてカプセル化し、オブジェクト指向プログラミングのスタイルで実装した例を紹介します。処理を分割することで、コードの再利用性と可読性が向上します。

import java.util.HashMap;
class Demo {
    static void print_keys(HashMap<String, String> input_map){
        System.out.print("\nThe keys of the Hashmap are: ");
        for(String key: input_map.keySet()) {
            System.out.print(key);
            System.out.print(", ");
        }
    }
    static void print_values( HashMap<String, String> input_map){
        System.out.print("\nThe Values of the Hashmap are: ");
        for(String value: input_map.values()) {
            System.out.print(value);
            System.out.print(", ");
        }
    }
    public static void main(String[] args) {
        System.out.println("The required packages have been imported");
        HashMap<String, String> input_map = new HashMap<>();
        input_map.put("Java", "Enterprise");
        input_map.put("Python", "ML/AI");
        input_map.put("JavaScript", "Frontend");
        input_map.put("Mysql", "Backend");
        System.out.println("The HashMap is defined as: " + input_map);
        print_keys(input_map);
        print_values(input_map);
    }
}

出力

The required packages have been imported
The HashMap is defined as: {Java=Enterprise, JavaScript=Frontend, Mysql=Backend, Python=ML/AI}

The keys of the Hashmap are: Java, JavaScript, Mysql, Python,
The Values of the Hashmap are: Enterprise, Frontend, Backend, ML/AI,

補足:entrySet()でキーと値を同時に取得する

キーと値をペアのまま扱いたい場合は、entrySet()メソッドが便利です。Map.EntryのgetKey()とgetValue()を組み合わせることで、1回のループで両方にアクセスできます。

for (Entry<String, String> entry : input_map.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}

まとめ

HashMapの反復処理には、キーのみを取得するkeySet()、値のみを取得するvalues()、そして両方を同時に扱えるentrySet()の3つの方法があります。用途に応じて使い分けることで、より読みやすく効率的なコードを書けます。なお、HashMapは要素の順序を保証しないため、挿入順どおりに表示したい場合はLinkedHashMap、キーでソートしたい場合はTreeMapの利用を検討するとよいでしょう。

  1. Javaで文字列内の各文字の出現回数をカウントする方法(HashMap活用)

    Javaで文字列に含まれる各文字が何回出現するかをカウントしたい場面は多くあります。例えば、テキスト解析やデータ処理の前処理などです。本記事では、HashMapを使って効率的に各文字の出現回数を数える方法を解説します。 対象となる文字列 今回は、次の文字列を例にして説明します。 String myStr = thisisit; この文字列「thisisit」には、t・h・i・s の4種類の文字が含まれており、それぞれの出現回数を求めるのがゴールです。 カウントの仕組み:HashMapを使ったアプローチ 文字ごとの出現回数を管理するために、キーに文字(Character)、値に出現回数(Inte

  2. Javaで回文を判定するプログラムの書き方【数値・文字列の実例付き】

    回文(パリンドローム)とは、逆から読んでも同じになる文字列や数値のことです。たとえば、121、313、525 といった数値や、「aba」「wow」のような文字列が回文に該当します。この記事では、Javaを使って回文を判定する方法を、数値の場合と文字列の場合の2つのパターンに分けて、サンプルコードと実行結果とともにわかりやすく解説します。回文数をチェックする方法数値が回文かどうかを判定するには、元の数値を1桁ずつ取り出して逆順に組み立て直し、元の値と比較します。具体的には、剰余演算(%10)で末尾の桁を取り出し、それを結果変数に10倍しながら加算していくことで反転した数値を作れます。サンプルコー