Использование ассоциативных массивов

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("Возраст Alice: " + 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() + " лет.");
        }
    }
}

Пример вывода:

Возраст Alice: 24
Возраст кого-то, кто отсутствует в словаре: -1
Alice 24 лет.
Bob 30 лет.
Charlie 28 лет.

HashMap - это только одна из реализаций. Если ваши ключи уникальны и вам нужна их сортировка, рассмотрите TreeMap. Если вам нужен словарь, сохраняющий порядок вставки, LinkedHashMap будет вашим выбором.

Глубокое Погружение

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

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