Ответ
Напрямую итерироваться по Map можно только по парам ключ-значение (entrySet) или ключам (keySet). Для перебора только значений необходимо сначала получить коллекцию значений методом values().
Способы перебора значений:
-
Цикл for-each:
Map<String, Integer> map = Map.of("A", 1, "B", 2, "C", 3); for (Integer value : map.values()) { System.out.println(value); // 1, 2, 3 } -
Итератор:
Iterator<Integer> iterator = map.values().iterator(); while (iterator.hasNext()) { Integer value = iterator.next(); // обработка value } -
Stream API:
map.values().stream() .forEach(System.out::println); map.values().stream() .filter(v -> v > 1) .forEach(System.out::println); -
Метод forEach (с Java 8):
map.values().forEach(System.out::println);
Важно: Метод values() возвращает представление (Collection<V>), связанное с исходной мапой. Изменения в мапе отражаются в этой коллекции, но саму коллекцию напрямую изменять (добавлять элементы) нельзя.