Інтерфейс Map та клас HashMap
В Java інтерфейс Map і клас HashMap використовуються для зберігання та управління колекціями пар “ключ-значення”. Вони дозволяють ефективно асоціювати одні об’єкти (ключі) з іншими (значеннями), забезпечуючи доступ до елементів за ключем.
1. Інтерфейс Map
Map — це колекція, яка зберігає пари “ключ-значення”. Кожен ключ є унікальним, тобто не може бути дубліката ключів, тоді як значення може повторюватися. Основною метою `Map` є швидкий доступ до значень через їх ключі.
Основні методи інтерфейсу Map:
- put(K key, V value): Додає пару “ключ-значення” до карти. Якщо такий ключ уже існує, значення оновлюється.
- get(Object key): Повертає значення, асоційоване з заданим ключем. Якщо ключа немає, повертається `null`.
- remove(Object key): Видаляє пару з карти за заданим ключем.
- containsKey(Object key): Перевіряє, чи міститься певний ключ у карті.
- containsValue(Object value): Перевіряє, чи є певне значення в карті.
- size(): Повертає кількість пар “ключ-значення” у карті.
- keySet(): Повертає множину всіх ключів у карті.
- values(): Повертає колекцію всіх значень у карті.
- entrySet(): Повертає набір усіх пар “ключ-значення”.
2. Клас HashMap
HashMap — це найбільш поширена реалізація інтерфейсу `Map`. Вона використовує хешування для зберігання та швидкого доступу до елементів. Кожен ключ хешується за допомогою хеш-функції, яка дозволяє знаходити його позицію у внутрішній структурі даних.
Особливості HashMap:
- Швидкість: Використання хешування забезпечує дуже швидкий доступ до елементів. Більшість операцій (додавання, пошук, видалення) виконуються за час O(1).
- Немає порядку: `HashMap` не гарантує порядок елементів. Порядок ключів може змінюватися під час додавання нових пар або зміни карти.
- Дозволяє `null` ключі та значення: `HashMap` дозволяє використовувати `null` як ключ, так і значення.
Приклад використання `HashMap`:
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// Створення HashMap
Map<String, Integer> map = new HashMap<>();
// Додавання елементів
map.put(“Київ”, 2800000);
map.put(“Львів”, 721301);
map.put(“Одеса”, 1014000);
// Отримання значення за ключем
System.out.println(“Населення Києва: ” + map.get(“Київ”)); // Виведе: Населення Києва: 2800000