Map Flashcards

1
Q

Что такое Map

A

Map — это интерфейс коллекции в Java который хранит данные в формате ‘ключ-значение’.
Ключи уникальны а значения могут повторяться.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Основные методы Map

A

put(K key, V value) — добавляет или обновляет пару ‘ключ-значение’;
get(Object key) — возвращает значение связанное с данным ключом или null если такого ключа нет;
remove(Object key) — удаляет пару ‘ключ-значение’ по ключу;
containsKey(Object key) — проверяет наличие ключа в Map;
containsValue(Object value) — проверяет наличие значения в Map;
keySet() — возвращает множество всех ключей;
values() — возвращает коллекцию всех значений;
entrySet() — возвращает набор всех пар ‘ключ-значение’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как работает Map

A

Map хранит пары ‘ключ-значение’ и обеспечивает доступ к значениям на основе уникального ключа.
В Java Map реализуется несколькими классами такими как HashMap, TreeMap, LinkedHashMap и ConcurrentHashMap.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Описание HashMap

A

HashMap — реализация Map которая хранит элементы без определённого порядка.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Под капотом HashMap

A

HashMap использует массив где каждая ячейка массива представляет собой ‘бакет’.
Каждый ключ преобразуется в индекс массива с помощью хеш-функции (hashCode()).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Коллизии в HashMap

A

Если два ключа имеют одинаковый хеш (коллизия) то используется связанный список или сбалансированное дерево (начиная с Java 8 при превышении определённого порога).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Время доступа HashMap

A

O(1) при удачном хешировании но может достигать O(log n) из-за использования деревьев при коллизиях.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Особенности HashMap

A

Не гарантирует порядка элементов, допускает null в качестве ключа и значения.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Описание LinkedHashMap

A

LinkedHashMap наследуется от HashMap но хранит элементы в порядке вставки или в порядке доступа (если включено).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Под капотом LinkedHashMap

A

Использует связанный список поверх HashMap для поддержания порядка элементов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Время доступа LinkedHashMap

A

Схоже с HashMap так как основная структура — это тот же массив ‘бакетов’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Особенности LinkedHashMap

A

Может быть полезен если важен порядок вставки. Также поддерживает null в качестве ключей и значений.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Описание TreeMap

A

TreeMap реализует интерфейс SortedMap и хранит элементы в отсортированном порядке на основе ‘натурального порядка’ ключей или заданного компаратора.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Под капотом TreeMap

A

Использует структуру Красно-Чёрного дерева где ключи хранятся в отсортированном виде.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Время доступа TreeMap

A

O(log n) для операций вставки, поиска и удаления.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Особенности TreeMap

A

Не допускает null в качестве ключей (выбрасывает NullPointerException) но допускает null значения.