Подскажите пож., я не пойму суть кода.
Как я понимаю что здесь происходит:
1. В методе createMap() создается HashMap map.
2. В методе removeTheFirstNameDuplicates(Map<String, String> map) на вход идёт наш созданный map, в нём мы перебираем каждое значение, и сразу вызываем метод removeItemFromMapByValue(Map<String, String> map, String value)
3. В методе removeItemFromMapByValue(Map<String, String> map, String value) создается новый HashMap copy, который принимает на входе все значение map. Затем с помощью итератора мы проходим по всем значениям copy и сравниваем его каждое значение с переданным значением value из map.Если оно совпадает, то мы удаляем из map данный элемент по ключу (т.к. ключи у них одинаковые). Такое удаление возможно только потому что в цикле for мы проходимся по copy, а не по map.
Если я где-то не прав поправьте меня.
И если я прав,то почему мой код не принимает?
package com.javarush.task.task08.task0817;
import java.util.HashMap;
import java.util.Map;
/*
Нам повторы не нужны
*/
public class Solution {
public static HashMap<String, String> createMap() {
HashMap<String, String> map = new HashMap<String, String>();
map.put("S", "JUNE 1 1980");
map.put("St", "AUGUST 1 1980");
map.put("Sta", "JANUARY 1 1980");
map.put("Stal", "FEBRUARY 1 1980");
map.put("Stall", "MARCH 1 1980");
map.put("Stallo", "APRIL 1 1980");
map.put("Stallon", "MAY 1 1980");
map.put("Stallone", "NOVEMBER 1 1980");
map.put("Stallone1", "DECEMBER 1 1980");
map.put("Stallone2", "SEPTEMBER 1 1980");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
for (Map.Entry<String, String> pair : map.entrySet()){
String value = pair.getValue();
removeItemFromMapByValue(map, value);
}
}
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) {
}
}