Что происходит во время итерации когда я добавляю эту строку? "String s = iterator.next().getKey();"
Просто без неё у меня всё нормально из мапы удаляются значения меньше 500.
А с ней удаляется 4 и 10 элементы соответственно. Почему?package com.javarush.task.task08.task0818;
import java.util.*;
import java.util.Map;
/*
Только для богачей
*/
public class Solution {
public static Map<String, Integer> createMap() {
Map<String, Integer> map = new HashMap<>();
map.put ("1",500);
map.put ("2",600);
map.put ("3",234);
map.put ("4",234);
map.put ("5",111);
map.put ("6",4564);
map.put ("7",444);
map.put ("8",4646);
map.put ("9",787);
map.put ("10",78);
return map;
}
public static void removeItemFromMap(Map<String, Integer> map) {
Iterator <Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
String s = iterator.next().getKey(); // что такое делает эта строка??
int i = iterator.next().getValue();
if (i<500) iterator.remove();
}
}
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put ("1",500);
map.put ("2",600);
map.put ("3",234);
map.put ("4",234);
map.put ("5",111);
map.put ("6",4564);
map.put ("7",444);
map.put ("8",4646);
map.put ("9",787);
map.put ("10",78);
removeItemFromMap(map);
for (Map.Entry<String,Integer> x: map.entrySet()) {
System.out.println(x);
}
Iterator <Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
//String s = iterator.next().getKey();
//int i = iterator.next().getValue();
System.out.println (iterator.next().getValue());
}
}
}