Логическое решение вижу следующим образом; но компилятор подсказывает мне что я глубоко ошибаюсь)))
В чем ошибка, и где верное решение?
package com.javarush.task.task08.task0817;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
Нам повторы не нужны
Создать словарь (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> 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> values = new ArrayList<>();
for (Map.Entry<String, String> pair : map.entrySet()) {
String value = pair.getValue();
values.add(value);
}
for (int i = 0; i < values.size(); i++) {
String value = values.get(i);
for (int j = 0; j < values.size(); j++) {
if (values.get(j).equals(value)) {
removeItemFromMapByValue(map, value);
}
}
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
HashMap<String, String> copy = new HashMap<>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().contains(value))
map.remove(pair.getKey());
}
}
public static void main(String[] args) {
}
}