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

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

public class Main {
    public static void main(String[] args) {
        // 与えられた文字列型のキーと値からなるマップ stringMap
        Map<String, String> stringMap = new HashMap<>();
        stringMap.put("apple", "fruit");
        stringMap.put("banana", "fruit");
        stringMap.put("orange", "fruit");
        stringMap.put("carrot", "vegetable");
        stringMap.put("broccoli", "vegetable");
        stringMap.put("apple", "fruit");  // 重複するキー

        // 重複しているキーを表示
        displayDuplicateKeys(stringMap);
    }

    // 重複しているキーを表示するメソッド
    private static void displayDuplicateKeys(Map<String, String> map) {
        // キーの重複を検出するためのセット
        // 重複しているキーが追加されるたびに、このセットに追加していく
        // キーが既に存在する場合、そのキーは重複していると判断できる
        Map<String, Boolean> keySet = new HashMap<>();

        for (Map.Entry<String, String> entry : map.entrySet()) {
            String key = entry.getKey();

            // 既にセットに存在する場合は重複しているキー
            if (keySet.containsKey(key)) {
                // 重複しているキーを表示
                System.out.println("Duplicate key: " + key);
            } else {
                // セットにキーを追加
                keySet.put(key, true);
            }
        }
    }
}

このコードでは、displayDuplicateKeys メソッドを使用してキーの重複を検出し、それを表示しています。keySet というセットを使用して既に出現したキーをトラッキングしています。新しいキーが追加されるたびにセットに登録し、すでにセットに存在する場合は重複として判定しています。

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