Люди добрые, подскажите, почему не принимает решение, неделю почти бьюсь (после работы не особо много времени), никак найти не могу решение данной задачи... Пишет, что "Метод removeTheFirstNameDuplicates() должен вызывать метод removeItemFromMapByValue()." и "Метод removeTheFirstNameDuplicates() должен удалять из словаря всех людей, имеющие одинаковые имена." Проверял через sout, все работает вроде как корректно: и нужный метод для удаления дублей вызывается, и значение, от которого потом дубль пошел, тоже удаляется. Не понимаю...
package com.javarush.task.task08.task0817;
import java.util.*;
/*
Нам повторы не нужны
Создать словарь (Map<String, String>) занести в него десять записей по принципу "фамилия" - "имя".
Удалить людей, имеющих одинаковые имена.
Требования:
1. Программа не должна выводить текст на экран.
2. Программа не должна считывать значения с клавиатуры.
3. Метод createMap() должен создавать и возвращать словарь HashMap с типом элементов String, String состоящих из 10 записей.
4. Метод removeTheFirstNameDuplicates() должен удалять из словаря всех людей, имеющие одинаковые имена.
5. Метод removeTheFirstNameDuplicates() должен вызывать метод removeItemFromMapByValue().
*/
public class Solution {
public static HashMap<String, String> createMap() {
//напишите тут ваш код
HashMap<String, String> someMap = new HashMap<String, String>();
someMap.put("keyOne", "Value1");
someMap.put("keyTwo", "Value2");
someMap.put("keyThree", "Value3");
someMap.put("keyFour", "Value3");
someMap.put("keyFive", "Value5");
someMap.put("keySix", "Value7");
someMap.put("keySeven", "Value8");
someMap.put("keyEight", "Value9");
someMap.put("keyNine", "Value10");
someMap.put("keyTen", "Value11");
return someMap;
}
public static void removeTheFirstNameDuplicates(HashMap<String, String> map) {
//напишите тут ваш код
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
HashMap<String, String> copy = new HashMap<String, String>(map);
while(iterator.hasNext()){
Map.Entry<String, String> pair = iterator.next();
String val = pair.getValue();
String key = pair.getKey();
for (Map.Entry<String, String> entry : map.entrySet()){
if (entry.getValue() == val && entry.getKey() != key){
removeItemFromMapByValue(copy, val);
}
}
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
HashMap<String, String> copy = new HashMap<String, String>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value))
map.remove(pair.getKey());
}
}
public static void main(String[] args) {
}
}