Помогите решить задачу. Удалить элементы map у которых значения повторяются

public class Solution {
    public static Map<String, String> createMap() {
        Map<String, String> map = new HashMap<>();
        map.put("Alexeev1", "Maxim1");
        map.put("Alexeev2", "Maxim2");
        map.put("Alexeev3", "Maxim2");
        map.put("Alexeev4", "Maxim3");
        map.put("Alexeev5", "Maxim4");
        map.put("Alexeev6", "Maxim5");
        map.put("Alexeev7", "Maxim6");
        map.put("Alexeev8", "Maxim7");
        map.put("Alexeev9", "Maxim8");
        map.put("Alexeev10", "Maxim9");
        return map;

    }

    public static void removeTheFirstNameDuplicates(Map<String, String> map) {
        //напишите тут ваш код

    }

    public static void removeItemFromMapByValue(Map<String, String> map, String value) {
        Map<String, String> copy = new HashMap<>(map);
        for (Map.Entry<String, String> pair : copy.entrySet()) {
            if (pair.getValue().equals(value)) {
                map.remove(pair.getKey());
            }
        }
    }

    public static void main(String[] args) {

    }
}

Ответы (1 шт):

Автор решения: insolor

Как вариант - в отдельном Map посчитать сколько раз каждое значение встретилось, потом в исходном Map удалить те записи, где значение встретилось больше одного раза:

public static Map<String, Integer> countValues(Map<String, String> map) {
    Map<String, Integer> result = new HashMap<>();
    for(String value: map.values()) {
        result.put(value, result.getOrDefault(value, 0) + 1);
    }
    return result;
}

public static void removeTheFirstNameDuplicates(Map<String, String> map) {
    Map<String, Integer> count = countValues(map);
    Map<String, String> copy = new HashMap<>(map);

    for (Map.Entry<String, String> pair : copy.entrySet()) {
        if (count.get(pair.getValue()) > 1) {
            map.remove(pair.getKey());
        }
    }
}

public static void main(String[] args) {
    var map = createMap();
    removeTheFirstNameDuplicates(map);
    System.out.println(map);
}

Результат:

{Alexeev9=Maxim8, Alexeev8=Maxim7, Alexeev1=Maxim1, Alexeev5=Maxim4, Alexeev4=Maxim3, Alexeev7=Maxim6, Alexeev6=Maxim5, Alexeev10=Maxim9}

Видно, что записи со значением Maxim2 выбыли

→ Ссылка