A partir do sysout "iterando nos maps 3" ele não printa mais os valores do foreach, somente printa os sysout fora dos loops, que seria: "iterando no maps 3" e "outros formados de loops". Alguém saberia me explicar porque? eu troquei de lugar e aparentou funcionar... mas pq nesta ordem não???
Também, entre values e entryset, alguém sabe a diferença e quando é melhor usar um do q o outro?
Map<Integer, String> peoples = new HashMap<>();
peoples.put(21, "Leonardo");
peoples.put(27, "Fabio");
peoples.put(19, "Jade");
peoples.put(23, "Joel");
System.out.println("ITERANDO NOS MAPS");
for (Map.Entry<Integer,String> pair : peoples.entrySet()) {
System.out.println(pair.getKey());
System.out.println(pair.getValue());
}
System.out.println("ITERANDO NOS MAPS 2");
Iterator it4 = peoples.entrySet().iterator();
while (it4.hasNext()) {
Map.Entry iterando = (Map.Entry)it4.next();
System.out.println(iterando.getKey() + " = " + iterando.getValue());
it4.remove(); // avoids a ConcurrentModificationException
}
System.out.println("ITERANDO NOS MAPS 3");
peoples.keySet().forEach(id -> {
System.out.println(peoples.get(id));
});
System.out.println("outros formatos de loops:");
peoples.keySet().forEach(System.out::println);
peoples.values().forEach(System.out::println);
peoples.entrySet().forEach(System.out::println);