public static void main(String[] args) throws Exception {
removeItemFromMap(createMap());
}
public static HashMap<String,Integer> createMap(){
HashMap<String,Integer> map = new HashMap<>();
map.put("1",100);
map.put("2",1000);
map.put("3",10120);
map.put("4",400);
map.put("5",1200);
map.put("6",300);
map.put("7",11200);
map.put("8",400);
map.put("9",12200);
map.put("10",10220);
return map;
}
public static void removeItemFromMap(HashMap<String,Integer> map){
HashMap<String,Integer> copy = new HashMap<>();
for (Map.Entry<String,Integer>pair:copy.entrySet()){
if (pair.getValue()<500){
map.remove(pair.getKey());
}
}for (Map.Entry<String,Integer>pair:map.entrySet()){
System.out.println(pair.getKey()+" "+pair.getValue());
}
}
Tommy
18 уровень
Добавил в ремув - вывод в консоль. Запустил через майн Выводит все значения ничего не удалив. Почему не прикрепляется код в обсуждении
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
22 января 2021, 09:51
У тебя в copy пусто.
+1
MasterMarg
22 января 2021, 10:13
Он просто забыл использовать свой метод))
Честно говоря, я вообще с трудом понимаю, что тут происходит
Зачем он вообще в аргументы включил какую-то мапу, если он создает новую мапу, и есть целый метод, который эту мапу создает.
Скорее надо
а потом уже работать с ней. Или вообще не объявлять никакую copy, раз уже есть переданная мапа 0
Ksenia Volkova Java Developer в DXC Master
22 января 2021, 10:18
Метод removeItemFromMap не должен создавать сам себе новую мапу, он как раз должен получать ее в параметрах - тут как раз все верно.
Просто для того чтобы задумка работала, надо было сделать копию.
0
MasterMarg
22 января 2021, 10:19
Разве цикл forEach будет пропускать элементы при удалении? Тут же не по индексу адресация. Я не в курсе этих тонкостей, но что мешает сразу идти по мапе и удалять из нее значения? Логично предположить, что, если удалить запись с ключом "1", то обход не собьется, а продолжит со следующей записи
0
Ksenia Volkova Java Developer в DXC Master
22 января 2021, 10:23
Как раз в цикле for each нельзя удалять записи из колекции, которая перебирается этим for each.
Для этого и создается копия - цикл идет по копии, а удаляет из оригинала.
(Это если не хочется итератором пользоваться).
0
Tommy
22 января 2021, 12:44
Май мистейк.
А почему код не прикрепляется в обсуждение?
0