Освоение Java LinkedHashMap: создание, операции и сравнение производительности
Освоение Java LinkedHashMap: создание, операции и сравнение производительности
Узнайте, как создавать, манипулировать и сравнивать Java LinkedHashMap с реальными примерами и лучшими практиками.
Класс LinkedHashMap в Java Collections Framework объединяет быстрые поиски хеш-таблицы с предсказуемым порядком итерации благодаря внутреннему двусвязному списку, сохраняющему порядок вставки или доступа.
Создание LinkedHashMap
Для использования LinkedHashMap импортируйте java.util.LinkedHashMap и создайте экземпляр. Конструктор принимает начальную ёмкость, коэффициент загрузки и опциональный флаг accessOrder.
// LinkedHashMap с начальной ёмкостью 8 и коэффициентом загрузки 0.6
LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
Параметры:
- capacity — количество корзин; по умолчанию 16.
- loadFactor — запускает ресайз, когда таблица заполнена на 60%; по умолчанию 0.75.
- accessOrder —
falseдля порядка вставки,trueдля порядка от наименее к наиболее недавнему доступу.
Пример с настройками по умолчанию:
LinkedHashMap<Key, Value> defaultMap = new LinkedHashMap<>();
Создание LinkedHashMap из существующих карт
Скопируйте существующую карту в LinkedHashMap для сохранения порядка:
LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
numbers.put("Three", 3);
Вывод:
LinkedHashMap1: {Two=2, Four=4} LinkedHashMap2: {Two=2, Four=4, Three=3}
Ключевые операции
Вставка элементов
put(key, value)— добавляет или заменяет отображение.putIfAbsent(key, value)— добавляет только если ключ отсутствует.putAll(map)— объединяет другую карту.
LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
numbers.put("One", 1);
numbers.putIfAbsent("Two", 2);
numbers.putAll(evenNumbers);
Доступ к элементам
Получите ключи, значения или записи:
entrySet()— все пары ключ/значение.keySet()— все ключи.values()— все значения.get(key)— значение илиnull, если отсутствует.getOrDefault(key, default)— безопасное получение с запасным вариантом.
int val = numbers.get("Three");
int def = numbers.getOrDefault("Five", 5);
Удаление элементов
remove(key)— удаляет по ключу.remove(key, value)— удаляет только если значение совпадает.clear()— очищает карту.containsKey(key)— проверка существования.containsValue(value)— проверка существования.size()— количество записей.isEmpty()— проверка пустоты.
LinkedHashMap против HashMap
- LinkedHashMap сохраняет порядок вставки или доступа; HashMap — нет.
- LinkedHashMap использует дополнительную память для связей узлов.
- Итерация LinkedHashMap немного медленнее, но предлагает предсказуемое упорядочивание.
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Понимание Java Vector: использование, особенности и сравнение с ArrayList