Делал по этой схеме:
1. В методе removeTheFirstNameDuplicates(Map<String, String> map) создадим мапу<String, INteger>
2. в цикле по значениям первоначальной мапы положим в новую мапу в качестве ключей - имена, а в качестве значений будем указывать количество раз, которое данное имя встречается, например
for (String v : map.values()) {
если (такого ключа еще нет null ) кладем этот ключ в новую мапу со значением 1; // newMap.put(v, 1);
иначе вновь кладем данный ключ и добавляем единицу к значению // newMap.put(v, newMap.get(v) +1));
}
таким образом мы получили новый словарь с именами - количеством таких имен в первоначальной мапе.
3. еще один цикл по всей новой мапе (pair : newMap.entrySet()), в котором сравниваем с единицей значения новой мапы.
если больше 1, вызываем метод removeItemFromMapByValue(map, pair.getKey());
package com.javarush.task.task08.task0817;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
Map<String, String> map = new HashMap<>();
map.put("Обоев", "Рулон");
map.put("Помоев", "Ушат");
map.put("Ковбоев", "Отряд");
map.put("Покоев", "Захват");
map.put("Надоев", "Рекорд");
map.put("Уродов", "Парад");
map.put("Фазанов", "Полет");
map.put("Маньяков", "Отряд");
map.put("Маньяко", "Парад");
map.put("Надоевил", "Захват");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
Map<String, Integer> map2 = new HashMap<>();
for (Map.Entry<String, String> v : map.entrySet()) {
if(map2.containsKey(v.getKey())){
map2.put(v.getValue(), map2.get(v.getValue()) + 1);
}
else{
map2.put(v.getValue(), 1);
}
}
for(Map.Entry<String, Integer> pair : map2.entrySet()){
if(pair.getValue() > 1){
removeItemFromMapByValue(map, pair.getKey());
}
}
}
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) {
}
}