Уже устал думать, я так понимаю моя основная причина это то, что метод removeItemFromMapByValue, удается только дубликат, оригинал оставляет не тронутым... я пока не совсем понимаю, как мне поправить код, чтобы в список заносился повторяющийся ключ и тот с которым было сравнение.
package com.javarush.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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) {
List<String> firstname = new ArrayList<>();
for (HashMap.Entry<String, String> pa : map.entrySet()) {
String key = pa.getKey();
String value = pa.getValue();
if (pa.getValue().equals(value)) {
firstname.add(key);
firstname.add(pa.getKey());
}
}
for (int i = 0; i <= firstname.size(); i++) {
removeItemFromMapByValue(map, firstname.get(i));
}
}
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) {
}
}