Рубрики
Без рубрики

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

Изучите различные способы перебора записей карты в Java.

Автор оригинала: baeldung.

1. Обзор

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

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

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

T he entry.getKey() возвращает ключ, а entry.GetValue() возвращает соответствующее значение.

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

Дальнейшее чтение:

Руководство по Java 8 forEach

Как выполнить итерацию По Потоку С Индексами

Поиск наибольшего значения в карте Java

2. entrySet и для цикла

Во-первых, давайте посмотрим, как перебирать Карту , используя Запись Набор :

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

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

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

3. Итератор и набор записей

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

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 с помощью iterator() API entrySet(). Затем, как обычно, мы перебираем итератор с помощью iterator.next().

4. С Лямбдами

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

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

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

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

5. Потоковый API

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

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

Это следует использовать, когда мы планируем сделать некоторые дополнительные Течение обработка; в противном случае это просто инструкция foreach() как описано ранее.

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

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

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

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

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