020 コレクションフレームワーク(Map) 017 解答例

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 与えられた2つの整数型のキーと値からなるマップ mapA と mapB
        Map<String, Integer> mapA = new HashMap<>();
        mapA.put("Apple", 3);
        mapA.put("Banana", 2);
        mapA.put("Orange", 5);

        Map<String, Integer> mapB = new HashMap<>();
        mapB.put("Apple", 7);
        mapB.put("Banana", 4);
        mapB.put("Grapes", 6);

        // 新しいマップを作成
        Map<String, Integer> mergedMap = mergeMaps(mapA, mapB);

        // 結果を表示
        System.out.println("新しいマップ: " + mergedMap);
    }

    // 与えられた2つのマップをマージするメソッド
    private static Map<String, Integer> mergeMaps(Map<String, Integer> mapA, Map<String, Integer> mapB) {
        // 新しいマップを作成
        Map<String, Integer> mergedMap = new HashMap<>(mapA);

        // mapB の各エントリに対して処理
        for (Map.Entry<String, Integer> entryB : mapB.entrySet()) {
            String keyB = entryB.getKey();
            int valueB = entryB.getValue();

            // mapA に対応するキーが存在する場合は値を合計
            if (mergedMap.containsKey(keyB)) {
                int valueA = mergedMap.get(keyB);
                mergedMap.put(keyB, valueA + valueB);
            } else {
                // mapA に対応するキーが存在しない場合はそのまま保持
                mergedMap.put(keyB, valueB);
            }
        }

        return mergedMap;
    }
}

このコードでは、mergeMaps メソッドを使用して mapAmapB をマージして新しいマップ mergedMap を作成しています。mergedMap には最初に mapA のエントリが追加され、その後 mapB のエントリが処理され、キーがすでに存在する場合は値を合計し、存在しない場合はそのまま新しいエントリが追加されます。

「020 コレクションフレームワーク」問題集リスト