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.