Просьба, помогите понять, в чем ошибка. В соответствии с условиями все выполнено, задача работает, вывод текста на экран разместил только для проверки. Перед проверкой скрываю. Предпоследнее условие не выполняется (Метод removeTheFirstNameDuplicates() должен удалять из словаря всех людей, имеющие одинаковые имена).
package com.javarush.task.task08.task0817;
import java.util.*;
/*
Нам повторы не нужны
*/
public class Solution {
public static HashMap<String, String> createMap() {
String[] names = new String[]{"Bob", "Simon", "Stuart", "Bob", "Jerry", "Stuart", "Kevin", "Kevin", "Jack", "Nick"};
HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i < names.length; i++) {
map.put("Minion" + (i+1), names[i]);
}
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
map = createMap();
removeItemFromMapByValue(map, "Bob");
removeItemFromMapByValue(map, "Stuart");
removeItemFromMapByValue(map, "Kevin");
removeItemFromMapByValue(map, "Simon"); //одинарные имена не удаляет
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
HashMap<String, String> copy = new HashMap<String, String>(map);
System.out.println(copy); //вывод на экран для проверки
ArrayList<String> values = new ArrayList<String>();
ArrayList<String> valuesDuplicates = new ArrayList<String>();
Iterator<String> iterator = copy.values().iterator();
while (iterator.hasNext()) {
String nameCheckDupl = iterator.next();
if (values.contains(nameCheckDupl)) {
valuesDuplicates.add(nameCheckDupl);
} else {
values.add(nameCheckDupl);
}
}
for (int j = 0; j < valuesDuplicates.size(); j++) {
Iterator<HashMap.Entry<String, String>> itr = copy.entrySet().iterator();
while (itr.hasNext()) {
HashMap.Entry<String, String> pair = itr.next();
String val = pair.getValue();
if (value.equals(valuesDuplicates.get(j)) && value.equals(val)) {
itr.remove();
}
}
}
System.out.println(copy); //вывод на экран для проверки
}
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
removeTheFirstNameDuplicates(map);
}
}