Итерации по карте в Java

1. Обзор

В этой быстрой статье мы рассмотрим различные способы итерации записей карты в Java.

Проще говоря, мы можем извлечь содержимое карты с помощью keySet (), valueSet () или entrySet () . Поскольку все это наборы, ко всем применяются одинаковые принципы итераций.

Map.entrySet API возвращает коллекцию ракурс карты, элементы которого взяты из карт класса. Единственный способ получить ссылку на одну запись карты - это использовать итератор этого представления коллекции.

Т он entry.getKey () возвращает ключ и entry.getValue () возвращает соответствующее значение.

Давайте посмотрим на некоторые из них.

2. EntrySet и for Loop

Во- первых, давайте посмотрим , как итерацию по карте с помощью входа Set :

public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }

Здесь мы преобразуем нашу карту в набор записей, а затем перебираем их, используя классический подход for-each.

Мы можем получить доступ к ключу каждой записи, вызвав getKey (), и мы можем получить доступ к значению каждой записи, вызвав getValue ().

3. Итератор и EntrySet

Другой подход - получить набор записей и выполнить итерацию с помощью Iterator:

public void iterateUsingIteratorAndEntry(Map map) { Iterator
    
      iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } }
    

Обратите внимание, как мы можем получить экземпляр Iterator, используя API iterator () функции entrySet (). Затем, как обычно, мы перебираем итератор с помощью iterator.next ().

4. С лямбдами

Давайте теперь посмотрим, как выполнить итерацию Map с помощью лямбда- выражений.

Как и большинство других вещей в Java 8, это оказывается намного проще, чем альтернативы; мы воспользуемся методом forEach () :

public void iterateUsingLambda(Map map) { map.forEach((k, v) -> System.out.println((k + ":" + v))); } 

В этом случае нам не нужно преобразовывать карту в набор записей. Чтобы узнать больше о лямбда-выражениях, вы можете начать здесь.

5. Stream API.

Stream API - одна из основных функций Java 8 . Мы также можем использовать эту функцию для циклического просмотра карты, но, как и в предыдущих примерах, нам нужно сначала получить набор записей:

public void iterateUsingStreamAPI(Map map) { map.entrySet().stream() // ... .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); } 

Это следует использовать, когда мы планируем выполнить дополнительную обработку Stream . В противном случае это просто forEach (), как описано ранее.

Чтобы узнать больше о Stream API, ознакомьтесь с этой статьей.

6. Заключение

В этом руководстве мы сосредоточились на простой, но важной операции - итерации по записям на карте.

Мы видели несколько методов, которые можно использовать только с Java 8, а именно лямбда-выражения и Stream API.

Как всегда, примеры кода в статье можно найти на GitHub.