Використання асоціативних масивів

Java:
Використання асоціативних масивів

Як використовувати:

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

import java.util.HashMap;
import java.util.Map;

public class LearnMaps {
    public static void main(String[] args) {
        // Створення HashMap
        Map<String, Integer> ageOfFriends = new HashMap<>();
        
        // Додавання елементів
        ageOfFriends.put("Alice", 24);
        ageOfFriends.put("Bob", 30);
        ageOfFriends.put("Charlie", 28);

        // Доступ до елементів
        System.out.println("Вік Аліси: " + ageOfFriends.get("Alice"));
        
        // Обробка неіснуючих ключів
        System.out.println("Вік когось, хто не в мапі: " + ageOfFriends.getOrDefault("Dan", -1));

        // Ітерація по елементам
        for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
            System.out.println(entry.getKey() + " має " + entry.getValue() + " років.");
        }
    }
}

Приклад виводу:

Вік Аліси: 24
Вік когось, хто не в мапі: -1
Аліса має 24 роки.
Боб має 30 років.
Чарлі має 28 років.

HashMap - це лише одна з реалізацій. Якщо ваші ключі унікальні і вам потрібно, щоб вони були впорядкованими, розгляньте TreeMap. Для мапи, яка зберігає порядок вставки, LinkedHashMap буде вашим другом.

Поглиблено

Мапи в Java є частиною Collections Framework, введеної у JDK 1.2, але зазнали значних поліпшень протягом років, включаючи введення методу forEach в Java 8 для легшої ітерації по елементах. Вибір реалізації мапи (HashMap, LinkedHashMap, TreeMap) має керуватися вашими конкретними потребами з точки зору упорядкування та продуктивності. Наприклад, HashMap пропонує часову ефективність O(1) для основних операцій (get та put), припускаючи, що хеш-функція розподіляє елементи належним чином серед кошиків. Однак, якщо вам потрібне сортування на основі природного порядку або кастомних компараторів, TreeMap є тим, до кого слід звертатися, надаючи час O(log n) для вставки та пошуку.

Перед тим, як був інтродукований Map, асоціативні масиви зазвичай реалізовувалися за допомогою двох паралельних масивів (один для ключів, інший для значень) або власних структур даних з меншою ефективністю. Поточні альтернативи до Map та його реалізацій можуть включати сторонні бібліотеки, які пропонують спеціалізовані мапи, як-от двонаправлені мапи (BiMap в бібліотеці Google’s Guava) для випадків, коли вам потрібно ефективно знайти ключ за його значенням. Однак, для більшості випадків використання в Java, мапи стандартної бібліотеки є надійними та гнучкими достатньо, щоб впоратися з завданням.