Как то мне эта тема не очень легко дается - понять не могу почему вот это не проходит:
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) iterator.next();
if(entry.getValue() < 500 ){
iterator.remove();
}
}
выводит все правильно, а валидацию не проходит ?
Максим
15 уровень
Оооочень не понятно !
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
12 февраля 2020, 07:50
Судя по наличию приведения типа, ты неправильно объявил итератор. У итератора при объявлении надо указывать тип хранимых данных:
0
Ksenia Volkova Java Developer в DXC Master
12 февраля 2020, 07:52
Ну вообще с приведением тоже работать должно...
0
Ksenia Volkova Java Developer в DXC Master
12 февраля 2020, 07:33
Давай код целиком
0
Максим
12 февраля 2020, 09:13
public static void main(String[] args) {
Map<String, Integer> maping = new HashMap<>();
maping.put("key1", 200);
maping.put("key2", 800);
maping.put("ky3", 600);
Iterator iterator = maping.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) iterator.next();
if(entry.getValue() < 500 ){
iterator.remove();
}
}
System.out.println(maping);
}
}
0
Ksenia Volkova Java Developer в DXC Master
12 февраля 2020, 09:19
По условию задачи:
- словарь должен создаваться в методе createMap()
- удаление должно происходить в методе removeItemFromMap()
- на экран ничего выводить не нужно.
0
Максим
12 февраля 2020, 09:58
то что выше , это так для примера , а вот код полностью :
package com.javarush.task.task08.task0818;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
Только для богачей
*/
public class Solution {
public static Map<String, Integer> createMap() {
Map<String, Integer> maping = new HashMap<>();
maping.put("key1", 200);
maping.put("key2", 800);
maping.put("key3", 600);
maping.put("key4", 300);
maping.put("key5", 750);
maping.put("key6", 2000);
maping.put("key7", 150);
maping.put("key8", 550);
maping.put("key9", 600);
maping.put("key10", 100);
return maping;
}
public static void removeItemFromMap(Map<String, Integer> map) {
Map<String, Integer> maping = new HashMap<>(map);
Iterator iterator = maping.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) iterator.next();
if(entry.getValue() < 500 ){
iterator.remove();
}
}
// в место кода выше, вставил ( maping.values().removeIf(v -> v < 500); ) вот это, и валидация прошла ! <---------- вот и не понятно почему код выше не прошел ?🙁
}
public static void main(String[] args) {
}
}
0
Ksenia Volkova Java Developer в DXC Master
12 февраля 2020, 10:10
Не знаю, как это могло пройти.
Должно было пройти с map.values().removeIf(v -> v < 500);
А так ты удаляешь не из map, а из копии maping. map при этом не меняется никак.
+1