Словами обьясните пожалуйста, почему оно может хотеть еще цикл внутри removeTheFirstNameDuplicates, ведь removeItemFromMapByValue уже всю работу сделал, или как?
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> mapka = new HashMap<>();
mapka.put("Орлов", "Аркадий");//напишите тут ваш код
mapka.put("Матюков","Геннадий");
mapka.put("ЙЙПетросян", "Евгений");
mapka.put("Мартиросян", "Григорий");
mapka.put("Белкин", "Леонид");
mapka.put("ЙЙСтавропольский", "Геннадий");
mapka.put("Богачев", "Дмитрий");
mapka.put("Новицкий", "Аркадий");
mapka.put("Ставропольский", "Семен");
mapka.put("Петросян", "Леонид");
return mapka;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) { // вызывает метод-удалитель, при этом
removeItemFromMapByValue(map,"Геннадий");// указывает с каким ЗНАЧЕНИЕМ сравнить
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {// метод-удалитель любой ПАРЫ,
Map<String, String> copy = new HashMap<>(map); // содержащей слово ЗНАЧЕНИЕ, что совпадет с "третьим" String (value).
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) { // при том что сравниваются значения
map.remove(pair.getKey()); // удаляет пару ключ-значение по ключу.
} // iterator.remove(); - используеться для Итератора через while.
}
}
public static void main(String[] args) {
// removeTheFirstNameDuplicates(createMap()); /*только вызывает ЭТОТ метод с аргументом нужной МАПЫ*/
Map <String, String> anyWord = createMap(); // - для проверки работоспособности.
removeTheFirstNameDuplicates(anyWord);
System.out.println(anyWord);
}
}