Прочитал много вариантов\предложений. У всех всё похоже и ошибка всё та же.
Не понимаю, что в логике не так.
Прохожу 2 раза по всем элементам. Во внутреннем for даже пересоздаю мапу (пробовал не пересоздавать. Различий не вижу.)
Сильно застрял на этой задаче. Данную теорию перечитал раз 8.
Если можно, незавуалированно указать на ошибку. Спасибо.
package com.javarush.task.task08.task0817;
import java.util.HashMap;
import java.util.Map;
/*
Нам повторы не нужны
*/
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, String> newMap = new HashMap<>(map);
for(Map.Entry<String, String> entry1 : newMap.entrySet()) {
int s = 0;
String value1 = entry1.getValue();
String key1 = entry1.getKey();
Map<String, String> newMap2 = new HashMap<>(newMap);
for (Map.Entry<String, String> entry2 : newMap2.entrySet()) {
String value2 = entry2.getValue();
String key2 = entry2.getKey();
if (value1.equals(value2) /*&& !key1.equals(key2)*/) {
s++;
}
}
if (s > 1) {
removeItemFromMapByValue(newMap, value1);
}
}
}
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) {
}
}