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> map = new HashMap<>();
map.put("sdf", "rere");
map.put("zcv", "erer");
map.put("gdb", "rere");
map.put("fvs", "dffd");
map.put("asfva", "zdzd");
map.put("sd", "fdfd");
map.put("asdv", "zdzd");
map.put("zc", "gfsge");
map.put("ZVD", "fvsd");
map.put("d", "d");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
for (Map.Entry<String, String> pairMap : map.entrySet()) {
Map<String, String> copyOfMap = new HashMap<>(map);
copyOfMap.remove(pairMap.getKey());
for (Map.Entry<String, String> pairCopyOfMap : copyOfMap.entrySet()) {
if (pairMap.getValue().equals(pairCopyOfMap.getValue())) {
removeItemFromMapByValue(map, pairMap.getValue());
}
}
}
}
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) {
Map<String, String> map = createMap();
removeTheFirstNameDuplicates(map);
for (Map.Entry<String, String> pair : map.entrySet()) {
System.out.println(pair);
}
}
}
Rick_Sanchez
41 уровень
почему выдает Exception?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
26 сентября 2020, 18:58
нельзя проходить Map и модифицировать его через forEach
можно только через iterator
можно, если проходить копию словаря, а удалять из основного
можно через map.removeIf()
можно через stream api
0
Rick_Sanchez
29 сентября 2020, 01:45
но я же удаляю элемент другой мапы, не той, по которой прохожусь циклом
0
hidden #2322530
29 сентября 2020, 06:05
посмотри первую и последнюю строку в методе. в первой ты проходишь map, и далеко внутри этого цикла ты удаляешь из map
0