Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Що таке Map? | Володіння Map у Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Структури Даних Java

bookЩо таке Map?

Ми розглянемо інтерфейс Map у Java. Інтерфейс Map є частиною Java Collections framework і визначає методи для роботи з даними у вигляді пар ключ-значення.

Розглянемо визначення:

Основна реалізація такої структури даних у Java — це HashMap, яка реалізує інтерфейс Map. Дослідимо основні методи та принципи роботи цієї реалізації.

Почнемо з оголошення та методів:

Main.java

Main.java

copy
1
Map<K, V> map = new HashMap<>();

Тут ви бачите, що у generics або діамантових дужках вказуються два значення:

  • Значення K відповідає типу даних для ключа;
  • Значення V відповідає типу даних для значення.

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

Тепер розглянемо методи, визначені в інтерфейсі Map.

Методи

V put(K key, V value): встановлює вказане значення для вказаного ключа у цьому Map. Якщо у Map раніше вже існувало відображення для цього ключа, старе значення замінюється.

Main.java

Main.java

copy
1234567891011121314
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println(map); } }

V get(Object key): повертає значення, яке відповідає вказаному ключу, або null, якщо цей Map не містить відображення для ключа.

Тут ми вказуємо ключ для отримання відповідного значення.

Отримаємо значення за ключем 2:

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); String value = map.get(2); System.out.println("Value: " + value); } }
  • boolean containsKey(Object key): повертає true, якщо Map містить відображення для вказаного ключа;

  • boolean containsValue(Object value): повертає true, якщо Map містить один або більше ключів, що відображаються на вказане значення.

Ці два методи очевидно пов'язані і допомагають визначити, чи містить вказаний Map потрібні ключі або значення. Ці методи зручно використовувати як умови, оскільки вони повертають boolean значення.

Розглянемо приклад:

Main.java

Main.java

copy
12345678910111213141516171819202122232425
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); if (map.containsKey(2)) { System.out.println("Value with key 2: " + map.get(2)); } else { System.out.println("There is no value with key 2!"); } if (map.containsValue("Four")) { System.out.println(map.get(4)); } else { System.out.println("There is no key with value \"Four\"!"); } } }

У наведеному вище прикладі перевіряється наявність ключа та наявність значення у Map. Якщо значення знайдено, вони відображаються у консолі. Якщо таких значень немає, виводяться повідомлення про відсутність таких даних.

  • boolean isEmpty(): повертає true, якщо цей Map не містить жодних пар ключ-значення;

  • V remove(Object key): видаляє відображення для заданого ключа з цього Map, якщо він присутній, і повертає попереднє значення.

Як і в інших структурах даних, можна видаляти елементи з Map.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); String removedElement = map.remove(3); System.out.println("Removed value: " + removedElement + ".\nMap after the removal operation: " + map); } }

Таким чином, ми можемо видаляти елементи за ключем.

Основні методи для керування Map

Далі наведені методи, з якими ви вже знайомі, і я їх перерахую без прикладів. Але залишилися також цікаві методи.

Почнемо з основних:

  • void clear(): видаляє всі елементи з Map;

  • int size(): повертає кількість пар ключ-значення у цьому Map;

  • void putAll(Map<? extends K, ? extends V> m): копіює всі відображення із вказаного Map у цей Map.

Тепер перейдемо до методів, які повертають колекцію зі значеннями (або ключами) з Map. Іншими словами, ми отримуємо з цієї структури даних структуру, що містить лише значення (або ключі). Наприклад, ArrayList<>.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Collection<String> list; list = map.values(); System.out.println("Values" + list); } }

Тут ми отримали колекцію значень із Map. Тепер цю колекцію можна передати в ArrayList:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Collection<String> collection; collection = map.values(); System.out.println("Values" + collection); List<String> arrayList = new ArrayList<>(collection); System.out.println("ArrayList: " + arrayList); } }

Ми ініціалізували ArrayList, використовуючи значення з Map.

Існує також метод, який повертає ключі з Map. Однак ці ключі повертаються у вигляді структури під назвою Set. Ми не будемо зараз детально розглядати цю структуру даних; варто зазначити, що Set — це структура даних, яка містить виключно унікальні значення.

Розглянемо цей метод:

Set<K> keySet(): повертає представлення ключів у вигляді Set, які містяться у цьому Map.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Set<Integer> keys; keys = map.keySet(); System.out.println("Keys: " + keys); } }

Таким чином, ми також можемо отримати набір усіх ключів з Map.

Отже, здається, ми завершили з методами. Тепер розглянемо використання Map, а також практичні приклади:

Використання Map

Структура типу ключ-значення має багато практичних застосувань. Розглянемо найпростішу з таких структур: система оцінювання студентів.

Створимо Map, де ключ має тип String, що представляє ім'я студента, а значення має тип Integer, що представляє оцінку студента. Таким чином, можна призначати оцінки студентам і легко отримувати оцінку конкретного студента за ключем:

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); } }

Тепер уявімо, що нам потрібно отримати оцінки Mike та Alice, а потім порівняти їх. Це можна легко зробити за допомогою методів, які ви вивчили вище. Реалізуємо це у коді:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); Integer mikeGrade = studentsGrades.get("Mike"); Integer aliceGrade = studentsGrades.get("Alice"); System.out.println(mikeGrade.compareTo(aliceGrade) == -1 ? "Alice's grade is higher": "Mike's grade is higher"); } }

Було використано тернарний оператор та метод compareTo() обгортки Integer. Якщо ви не розумієте, як це працює, це можна пояснити наступним чином:

Main.java

Main.java

copy
12345678910111213141516171819202122232425
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); Integer mikeGrade = studentsGrades.get("Mike"); Integer aliceGrade = studentsGrades.get("Alice"); if (mikeGrade.compareTo(aliceGrade) == -1) { System.out.println("Alice's grade is higher"); } else { System.out.println("Mike's grade is higher"); } } }

Тепер розглянемо ситуацію, коли потрібно зібрати всіх студентів з оцінкою вище 7 (не включаючи 7). Це стає цікаво, і зараз я поясню, як це зробити!

Ітерація по Map

Ітерацію по елементах Map у Java можна виконати різними способами, які надає інтерфейс Map та його реалізації. Ось декілька способів ітерації по Map:

Ітерація по ключах (keySet()): метод keySet() повертає множину всіх ключів у Map. Цю множину можна використати для ітерації по ключах та отримання відповідних значень.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } } }

Ітерація по значеннях (values()): метод values() повертає колекцію всіх значень у Map. Цю колекцію можна використовувати для ітерації по значеннях.

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (Integer value : map.values()) { System.out.println("Value: " + value); } } }

Ітерація по парах ключ-значення (entrySet()): метод entrySet() повертає набір об'єктів Map.Entry, які представляють пари ключ-значення. Це дозволяє ітеруватися безпосередньо по парах.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } } }

Розглянемо це детальніше. Спочатку це може здатися надзвичайно складним для розуміння, але не потрібно заглиблюватися в деталі роботи, оскільки синтаксис завжди однаковий.

Map.Entry<K, V> entry : map.entrySet()

Використовуючи об'єкт entry, можна одночасно отримати і ключ, і значення у Map. Тепер виконаємо завдання, наведене раніше, використовуючи entry set: отримати всіх студентів з оцінкою більшою за 7. Для цього використаємо перевірку через entry.getValue(), і коли знайдемо відповідних студентів, додамо їх ключі у заздалегідь створений ArrayList:

Main.java

Main.java

copy
1234567891011121314151617181920212223242526
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); List<String> studentsWithGradeHigherThanSeven = new ArrayList<>(); for (Map.Entry<String, Integer> entry : studentsGrades.entrySet()) { if (entry.getValue() > 7) { studentsWithGradeHigherThanSeven.add(entry.getKey()); } } System.out.println(studentsWithGradeHigherThanSeven); } }

Отже, ви можете ітеруватися по Map і знаходити потрібний список студентів, які склали іспит!

Entry set — це дуже корисний інструмент, оскільки дозволяє різними способами ітерації по Map за допомогою циклу, маючи доступ і до ключа, і до значення.

У наступному розділі ми детально розглянемо, як насправді працює HashMap, який ми так активно використовували у цьому розділі!

1. Який інтерфейс у Java представляє колекцію пар ключ-значення?

2. Як перебрати всі ключі в Map за допомогою циклу for-each?

3. Яке призначення методу values() у Map?

4. Який метод використовується для перевірки наявності певного ключа у Map?

5. Який метод використовується для видалення пари ключ-значення з Map у Java?

question mark

Який інтерфейс у Java представляє колекцію пар ключ-значення?

Select the correct answer

question mark

Як перебрати всі ключі в Map за допомогою циклу for-each?

Select the correct answer

question mark

Яке призначення методу values() у Map?

Select the correct answer

question mark

Який метод використовується для перевірки наявності певного ключа у Map?

Select the correct answer

question mark

Який метод використовується для видалення пари ключ-значення з Map у Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookЩо таке Map?

Свайпніть щоб показати меню

Ми розглянемо інтерфейс Map у Java. Інтерфейс Map є частиною Java Collections framework і визначає методи для роботи з даними у вигляді пар ключ-значення.

Розглянемо визначення:

Основна реалізація такої структури даних у Java — це HashMap, яка реалізує інтерфейс Map. Дослідимо основні методи та принципи роботи цієї реалізації.

Почнемо з оголошення та методів:

Main.java

Main.java

copy
1
Map<K, V> map = new HashMap<>();

Тут ви бачите, що у generics або діамантових дужках вказуються два значення:

  • Значення K відповідає типу даних для ключа;
  • Значення V відповідає типу даних для значення.

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

Тепер розглянемо методи, визначені в інтерфейсі Map.

Методи

V put(K key, V value): встановлює вказане значення для вказаного ключа у цьому Map. Якщо у Map раніше вже існувало відображення для цього ключа, старе значення замінюється.

Main.java

Main.java

copy
1234567891011121314
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println(map); } }

V get(Object key): повертає значення, яке відповідає вказаному ключу, або null, якщо цей Map не містить відображення для ключа.

Тут ми вказуємо ключ для отримання відповідного значення.

Отримаємо значення за ключем 2:

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); String value = map.get(2); System.out.println("Value: " + value); } }
  • boolean containsKey(Object key): повертає true, якщо Map містить відображення для вказаного ключа;

  • boolean containsValue(Object value): повертає true, якщо Map містить один або більше ключів, що відображаються на вказане значення.

Ці два методи очевидно пов'язані і допомагають визначити, чи містить вказаний Map потрібні ключі або значення. Ці методи зручно використовувати як умови, оскільки вони повертають boolean значення.

Розглянемо приклад:

Main.java

Main.java

copy
12345678910111213141516171819202122232425
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); if (map.containsKey(2)) { System.out.println("Value with key 2: " + map.get(2)); } else { System.out.println("There is no value with key 2!"); } if (map.containsValue("Four")) { System.out.println(map.get(4)); } else { System.out.println("There is no key with value \"Four\"!"); } } }

У наведеному вище прикладі перевіряється наявність ключа та наявність значення у Map. Якщо значення знайдено, вони відображаються у консолі. Якщо таких значень немає, виводяться повідомлення про відсутність таких даних.

  • boolean isEmpty(): повертає true, якщо цей Map не містить жодних пар ключ-значення;

  • V remove(Object key): видаляє відображення для заданого ключа з цього Map, якщо він присутній, і повертає попереднє значення.

Як і в інших структурах даних, можна видаляти елементи з Map.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); String removedElement = map.remove(3); System.out.println("Removed value: " + removedElement + ".\nMap after the removal operation: " + map); } }

Таким чином, ми можемо видаляти елементи за ключем.

Основні методи для керування Map

Далі наведені методи, з якими ви вже знайомі, і я їх перерахую без прикладів. Але залишилися також цікаві методи.

Почнемо з основних:

  • void clear(): видаляє всі елементи з Map;

  • int size(): повертає кількість пар ключ-значення у цьому Map;

  • void putAll(Map<? extends K, ? extends V> m): копіює всі відображення із вказаного Map у цей Map.

Тепер перейдемо до методів, які повертають колекцію зі значеннями (або ключами) з Map. Іншими словами, ми отримуємо з цієї структури даних структуру, що містить лише значення (або ключі). Наприклад, ArrayList<>.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Collection<String> list; list = map.values(); System.out.println("Values" + list); } }

Тут ми отримали колекцію значень із Map. Тепер цю колекцію можна передати в ArrayList:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Collection<String> collection; collection = map.values(); System.out.println("Values" + collection); List<String> arrayList = new ArrayList<>(collection); System.out.println("ArrayList: " + arrayList); } }

Ми ініціалізували ArrayList, використовуючи значення з Map.

Існує також метод, який повертає ключі з Map. Однак ці ключі повертаються у вигляді структури під назвою Set. Ми не будемо зараз детально розглядати цю структуру даних; варто зазначити, що Set — це структура даних, яка містить виключно унікальні значення.

Розглянемо цей метод:

Set<K> keySet(): повертає представлення ключів у вигляді Set, які містяться у цьому Map.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1, "One"); map.put(2, "Two"); map.put(3, "Three"); System.out.println("Map: " + map); Set<Integer> keys; keys = map.keySet(); System.out.println("Keys: " + keys); } }

Таким чином, ми також можемо отримати набір усіх ключів з Map.

Отже, здається, ми завершили з методами. Тепер розглянемо використання Map, а також практичні приклади:

Використання Map

Структура типу ключ-значення має багато практичних застосувань. Розглянемо найпростішу з таких структур: система оцінювання студентів.

Створимо Map, де ключ має тип String, що представляє ім'я студента, а значення має тип Integer, що представляє оцінку студента. Таким чином, можна призначати оцінки студентам і легко отримувати оцінку конкретного студента за ключем:

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); } }

Тепер уявімо, що нам потрібно отримати оцінки Mike та Alice, а потім порівняти їх. Це можна легко зробити за допомогою методів, які ви вивчили вище. Реалізуємо це у коді:

Main.java

Main.java

copy
123456789101112131415161718192021
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); Integer mikeGrade = studentsGrades.get("Mike"); Integer aliceGrade = studentsGrades.get("Alice"); System.out.println(mikeGrade.compareTo(aliceGrade) == -1 ? "Alice's grade is higher": "Mike's grade is higher"); } }

Було використано тернарний оператор та метод compareTo() обгортки Integer. Якщо ви не розумієте, як це працює, це можна пояснити наступним чином:

Main.java

Main.java

copy
12345678910111213141516171819202122232425
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); Integer mikeGrade = studentsGrades.get("Mike"); Integer aliceGrade = studentsGrades.get("Alice"); if (mikeGrade.compareTo(aliceGrade) == -1) { System.out.println("Alice's grade is higher"); } else { System.out.println("Mike's grade is higher"); } } }

Тепер розглянемо ситуацію, коли потрібно зібрати всіх студентів з оцінкою вище 7 (не включаючи 7). Це стає цікаво, і зараз я поясню, як це зробити!

Ітерація по Map

Ітерацію по елементах Map у Java можна виконати різними способами, які надає інтерфейс Map та його реалізації. Ось декілька способів ітерації по Map:

Ітерація по ключах (keySet()): метод keySet() повертає множину всіх ключів у Map. Цю множину можна використати для ітерації по ключах та отримання відповідних значень.

Main.java

Main.java

copy
12345678910111213141516
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } } }

Ітерація по значеннях (values()): метод values() повертає колекцію всіх значень у Map. Цю колекцію можна використовувати для ітерації по значеннях.

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (Integer value : map.values()) { System.out.println("Value: " + value); } } }

Ітерація по парах ключ-значення (entrySet()): метод entrySet() повертає набір об'єктів Map.Entry, які представляють пари ключ-значення. Це дозволяє ітеруватися безпосередньо по парах.

Main.java

Main.java

copy
1234567891011121314151617
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Key1", 1); map.put("Key2", 2); for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } } }

Розглянемо це детальніше. Спочатку це може здатися надзвичайно складним для розуміння, але не потрібно заглиблюватися в деталі роботи, оскільки синтаксис завжди однаковий.

Map.Entry<K, V> entry : map.entrySet()

Використовуючи об'єкт entry, можна одночасно отримати і ключ, і значення у Map. Тепер виконаємо завдання, наведене раніше, використовуючи entry set: отримати всіх студентів з оцінкою більшою за 7. Для цього використаємо перевірку через entry.getValue(), і коли знайдемо відповідних студентів, додамо їх ключі у заздалегідь створений ArrayList:

Main.java

Main.java

copy
1234567891011121314151617181920212223242526
package com.example; import java.util.*; public class Main { public static void main(String[] args) { Map<String, Integer> studentsGrades = new HashMap<>(); studentsGrades.put("Bob", 9); studentsGrades.put("Alice", 8); studentsGrades.put("Mike", 5); studentsGrades.put("John", 10); studentsGrades.put("Martin", 7); studentsGrades.put("Peter", 5); System.out.println("Student's grades: " + studentsGrades); List<String> studentsWithGradeHigherThanSeven = new ArrayList<>(); for (Map.Entry<String, Integer> entry : studentsGrades.entrySet()) { if (entry.getValue() > 7) { studentsWithGradeHigherThanSeven.add(entry.getKey()); } } System.out.println(studentsWithGradeHigherThanSeven); } }

Отже, ви можете ітеруватися по Map і знаходити потрібний список студентів, які склали іспит!

Entry set — це дуже корисний інструмент, оскільки дозволяє різними способами ітерації по Map за допомогою циклу, маючи доступ і до ключа, і до значення.

У наступному розділі ми детально розглянемо, як насправді працює HashMap, який ми так активно використовували у цьому розділі!

1. Який інтерфейс у Java представляє колекцію пар ключ-значення?

2. Як перебрати всі ключі в Map за допомогою циклу for-each?

3. Яке призначення методу values() у Map?

4. Який метод використовується для перевірки наявності певного ключа у Map?

5. Який метод використовується для видалення пари ключ-значення з Map у Java?

question mark

Який інтерфейс у Java представляє колекцію пар ключ-значення?

Select the correct answer

question mark

Як перебрати всі ключі в Map за допомогою циклу for-each?

Select the correct answer

question mark

Яке призначення методу values() у Map?

Select the correct answer

question mark

Який метод використовується для перевірки наявності певного ключа у Map?

Select the correct answer

question mark

Який метод використовується для видалення пари ключ-значення з Map у Java?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 1
some-alt