В методе removeTheFirstDuplicates(Map<String, String> map) mapa принимает аргументы.Iterator<Map.Entry<String, String>> iterator = dif.entrySet().iterator(); Тут переменная вроде бы передаёт ключи и значения, которые заданы выше, с этим более менее понятно. А в этой строчке for (Map.Entry<String, String> pair : copy.entrySet()) итератор проходиться по mapе с помощью цикла?
Где-то краем глаза увидел, что ребята решают двойным циклом(вложенным) или создают копию mapы. С двойными циклами, тоже хотелось бы глянуть вариант, но мне больше понравилась реализация, с копией mapы. И вот что-то не клеиться. Где-то по курсу я уже видел что-то похожее, но как то пропустил. Ребята помогите пожалуйста понять этот момент или какую-то абстрактную подсказку, толчок, а я уж дальше запедалю)...
package com.javarush.task.task08.task0817;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
Map<String, String> map = new HashMap<>();
map.put("Сталлоне1", "семён");
map.put("Сталлоне2", "семён");
map.put("Сталлоне3", "семён");
map.put("Сталлоне4", "семёпн");
map.put("Сталлоне5", "семён");
map.put("Сталлоне6", "семёпн");
map.put("Сталлоне7", "семпвён");
map.put("Сталлоне8", "семпыён");
map.put("Сталлоне9", "семёвн");
map.put("Сталлоне10", "семён");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) throws Exception{
Map<String, String> dif = new HashMap<String, String>(map);
Iterator<Map.Entry<String, String>> iterator = dif.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String,String> pair = iterator.next();
String key = pair.getKey();
String value = pair.getValue();
removeItemFromMapByValue(map,value);
}
}
public static void removeItemFromMapByValue(Map<String, String> map, String value) {
Map<String, String> copy = new HashMap<>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) {
map.remove(pair.getKey());
}
}
}
public static void main(String[] args) throws Exception {
}
}
duplicates
тоже как HashSet, чтобы в него не попадали повторы повторов.