Map2 Flashcards

1
Q

Описание ConcurrentHashMap

A

Потокобезопасная реализация Map для работы в многопоточных приложениях.

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

Под капотом ConcurrentHashMap

A

Делит данные на несколько сегментов (начиная с Java 8 используется CAS и локальные замки для каждого бакета).

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

Коллизии и конкуренция в ConcurrentHashMap

A

Благодаря сегментации и локальному блокированию достигается высокая скорость при многопоточном доступе.

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

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

A

В среднем O(1) но зависит от числа потоков и количества сегментов.

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

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

A

Не допускает null в качестве ключей и значений.

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

Описание WeakHashMap

A

Реализует Map которая хранит ‘слабые ссылки’ на ключи что позволяет автоматически удалять пары ‘ключ-значение’ при сборке мусора если ключ больше не используется.

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

Под капотом WeakHashMap

A

Ключи хранятся с использованием слабых ссылок (weak references) что позволяет сборщику мусора удалять ключи при отсутствии других сильных ссылок.

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

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

A

Используется для кэширования где важно освобождать память когда объекты больше не нужны.

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

Описание IdentityHashMap

A

Реализует Map которая сравнивает ключи по ссылкам (оператор ==) а не по методу equals().

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

Под капотом IdentityHashMap

A

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

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

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

A

Не используется для общих задач где сравнение по значению а не по ссылке является критически важным.

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

Когда использовать HashMap

A

Когда нужен быстрый доступ к данным и не важен порядок элементов. Подходит для большинства случаев если нет требований к поточной безопасности или упорядоченности.

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

Когда использовать LinkedHashMap

A

Если важно сохранить порядок вставки (например при итерации) или для реализации LRU-кэша (Least Recently Used) с использованием метода removeEldestEntry().

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

Когда использовать ConcurrentHashMap

A

В многопоточных средах где несколько потоков могут обращаться к Map одновременно. Эта реализация оптимизирована для минимизации блокировок.

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

Когда использовать WeakHashMap

A

Для кэшей где можно освобождать память когда ключи больше не используются.

17
Q

Когда использовать IdentityHashMap

A

Для специальных случаев где важно сравнение по ссылкам (например при работе с объектами которые представляют уникальные идентификаторы).

18
Q

Null ключи и значения

A

Не все реализации Map поддерживают null ключи и значения. Например TreeMap и ConcurrentHashMap не допускают null ключей.

19
Q

Хеширование и коллизии

A

HashMap и его производные используют хеширование для распределения ключей по бакетам но разные реализации по-разному решают проблему коллизий.

20
Q

Потокобезопасность

A

Стандартные реализации Map такие как HashMap и LinkedHashMap не потокобезопасны. Для многопоточных приложений рекомендуется использовать ConcurrentHashMap или синхронизацию.

21
Q

Сортировка и порядок

A

Только TreeMap и LinkedHashMap обеспечивают порядок в то время как HashMap и ConcurrentHashMap не гарантируют его.