Ітерація над картою на Java

1. Огляд

У цій короткій статті ми розглянемо різні способи ітерації записів Карти в Java.

Простіше кажучи, ми можемо витягти вміст карти, використовуючи keySet (), valueSet () або entrySet () . Оскільки це всі набори, до всіх них застосовуються подібні принципи ітерації.

Map.entrySet API повертає колекцію перспективу карти, елементи якого взяті з карт класу. Єдиний спосіб отримати посилання на один запис на карті - з ітератора цього подання колекції.

T entry.getKey () повертає ключ, а entry.getValue () - відповідне значення.

Давайте розглянемо декілька з них.

2. EntrySet і для Loop

По- перше, давайте подивимося , як ітерацію по карті з допомогою входу Set :

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

Тут ми перетворюємо нашу карту на набір записів, а потім перебираємо їх, використовуючи класичний для кожного підходу.

Ми можемо отримати доступ до ключа кожного запису, викликаючи getKey (), і ми можемо отримати доступ до значення кожного запису, викликаючи getValue ().

3. Ітератор та EntrySet

Іншим підходом було б отримати набір записів і виконати ітерацію за допомогою ітератора:

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 () of entrySet (). Потім, як зазвичай, ми прокручуємо ітератор за допомогою iterator.next ().

4. З лямбдами

Давайте тепер подивимося, як виконати ітерацію Карти за допомогою лямбда- виразів.

Як і більшість інших речей у Java 8, це виявляється набагато простіше, ніж альтернативи; ми використаємо метод forEach () :

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

У цьому випадку нам не потрібно перетворювати карту на набір записів. Щоб дізнатись більше про лямбда-вирази, ви можете розпочати тут.

5. Stream API

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

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

Це слід використовувати, коли ми плануємо зробити додаткову обробку потоку . В іншому випадку це просто простий forEach (), як описано раніше.

Щоб дізнатись більше про Stream API, перегляньте цю статтю.

6. Висновок

У цьому посібнику ми зосередили увагу на простій, але критичній операції - ітерації по записах карти.

Ми бачили кілька методів, які можна використовувати лише з Java 8, а саме вирази Лямбда та API Stream .

Як завжди, приклади коду в статті можна знайти на GitHub.