Самый простой и простой способ пройти через любую коллекцию Java — использовать итерируемый интерфейс. Итерируемый интерфейс, расширенный коллекцией Java, используется для перебора объектов. Интерфейс Map, в отличие от интерфейсов List, Set и Queue, не расширяет интерфейс Collection. Поэтому мы не можем итерировать Map напрямую, используя итераторы.

Обычно существует четыре способа перебора Map в Java. Могут быть вариации этих методов, поэтому не называйте меня точным числом. В этой статье мы обсудим их все, а также рассмотрим примеры кодирования.

Во-первых, нам нужно создать карту. Наша карта ниже, называемая студентами, содержит пары ключ-значение целочисленного идентификатора студента и имени студента String.

Map<Integer, String> students = new HashMap<>();
  students.put(100, "James Warton");
  students.put(101, "Alex Truman");
  students.put(102, "Alice Killet");
  students.put(103, "Lual Manyang");
  students.put(104, "Aston Villa");
  students.put(105, "Black Freeman");
  students.put(106, "Chris Dallas");
  1. Перебор Map.entrySet() с использованием расширенного цикла For:

Метод map.entrySet() возвращает установленное представление карты, то есть представление всех пар ключ-значение, присутствующих на карте. Для каждой записи ключ-значение на карте мы можем использовать методы getValue() и getKey() для получения ключа и значения соответственно. Эти два метода относятся к Map.Entry‹K,V›.

for(Map.Entry<Integer, String> entry: students.entrySet()) {
   System.out.println("Key: "+entry.getKey()+" value: "+entry.getValue());
  }

2. Перебор Map.Entry‹K,V› с использованием итераторов

Как упоминалось ранее, мы не можем напрямую использовать итератор с интерфейсом Map. Но мы можем использовать итератор на Map.Entry‹K,V›. Этот метод аналогичен первому. В первом методе мы использовали расширенный цикл for над Map.Entry‹K, V›, но здесь мы используем итераторы. Использование итераторов вместо Map.Entry‹K, V› имеет свое преимущество, т. е. мы можем удалять записи с карты во время итерации, вызывая метод iterator.remove().

Iterator<Map.Entry<Integer, String>> it = students.entrySet().iterator();
  while(it.hasNext()) {
   Map.Entry<Integer, String> entry = it.next();
   System.out.println("Key: "+entry.getKey()+" value: "+entry.getValue());
  }

3. Перебор ключей с помощью keySet() и расширенного цикла For

Мы можем использовать метод keySet(), чтобы вернуть установленное представление всех ключей на карте. Мы используем расширенный цикл for для перебора всех ключей в keySet(). Мы можем использовать метод get() для получения значения, связанного с каждым ключом. Если вам нужны только значения из карты, вы можете перебрать метод values(), используя циклы for-each. Ниже приведена программа Java, чтобы продемонстрировать это.

for(Integer key : students.keySet()) {
   System.out.println("Key: "+key + " Value: "+students.get(key));
  }

4. Перебор карты с использованием метода forEach():

Это, вероятно, самый чистый (с меньшим количеством кода) способ перебора вашей карты. Методы forEach() принимают лямбда-выражение

students.forEach((key,value)->System.out.println("Key: "+key + " Value: "+value));

Спасибо, что прочитали. Я надеюсь, что вы нашли эту статью полезной. Вы можете проверить подробное объяснение кодирования на нашем канале YouTube.

Следуйте за нами CodingSimplified