Map Flashcards
Что такое Map
Map — это интерфейс коллекции в Java который хранит данные в формате ‘ключ-значение’.
Ключи уникальны а значения могут повторяться.
Основные методы Map
put(K key, V value) — добавляет или обновляет пару ‘ключ-значение’;
get(Object key) — возвращает значение связанное с данным ключом или null если такого ключа нет;
remove(Object key) — удаляет пару ‘ключ-значение’ по ключу;
containsKey(Object key) — проверяет наличие ключа в Map;
containsValue(Object value) — проверяет наличие значения в Map;
keySet() — возвращает множество всех ключей;
values() — возвращает коллекцию всех значений;
entrySet() — возвращает набор всех пар ‘ключ-значение’.
Как работает Map
Map хранит пары ‘ключ-значение’ и обеспечивает доступ к значениям на основе уникального ключа.
В Java Map реализуется несколькими классами такими как HashMap, TreeMap, LinkedHashMap и ConcurrentHashMap.
Описание HashMap
HashMap — реализация Map которая хранит элементы без определённого порядка.
Под капотом HashMap
HashMap использует массив где каждая ячейка массива представляет собой ‘бакет’.
Каждый ключ преобразуется в индекс массива с помощью хеш-функции (hashCode()).
Коллизии в HashMap
Если два ключа имеют одинаковый хеш (коллизия) то используется связанный список или сбалансированное дерево (начиная с Java 8 при превышении определённого порога).
Время доступа HashMap
O(1) при удачном хешировании но может достигать O(log n) из-за использования деревьев при коллизиях.
Особенности HashMap
Не гарантирует порядка элементов, допускает null в качестве ключа и значения.
Описание LinkedHashMap
LinkedHashMap наследуется от HashMap но хранит элементы в порядке вставки или в порядке доступа (если включено).
Под капотом LinkedHashMap
Использует связанный список поверх HashMap для поддержания порядка элементов.
Время доступа LinkedHashMap
Схоже с HashMap так как основная структура — это тот же массив ‘бакетов’.
Особенности LinkedHashMap
Может быть полезен если важен порядок вставки. Также поддерживает null в качестве ключей и значений.
Описание TreeMap
TreeMap реализует интерфейс SortedMap и хранит элементы в отсортированном порядке на основе ‘натурального порядка’ ключей или заданного компаратора.
Под капотом TreeMap
Использует структуру Красно-Чёрного дерева где ключи хранятся в отсортированном виде.
Время доступа TreeMap
O(log n) для операций вставки, поиска и удаления.