Junior
Разкажете за колекцията Map в Java и нейните особености.
sobes.tech AI
Отговор от AI
Map — това е интерфейс в Java Collection Framework, който представлява колекция от двойки "ключ-стойност". Ключовете са уникални, а стойностите могат да се повтарят.
Основни характеристики:
- Ключът се използва за достъп до съответната стойност.
- Един и същи ключ не може да бъде добавен два пъти. При опит за добавяне на съществуващ ключ, старото стойност се заменя с новата.
Mapне наследява от интерфейсаCollection. Има свои собствени методи за работа с двойки "ключ-стойност".- Поредността на двойките "ключ-стойност" може да варира в зависимост от конкретната реализация.
Популярни реализации на Map:
HashMap: Не гарантира реда на елементите. Осигурява висока производителност за повечето операции (вмъкване, получаване, изтриване) при липса на конфликти с хешове.LinkedHashMap: Запазва елементите в реда на добавяне (или в реда на достъп, ако е конфигуриран по съответния начин).TreeMap: Запазва елементите в сортиран ред по ключа (естествен ред или предоставен от компаратор). Осигурява логаритмично време за повечето операции.
Примери за методи:
// Получаване на стойност по ключ
Object value = map.get(key);
// Добавяне или актуализиране на двойка ключ-стойност
Object oldValue = map.put(key, value);
// Изтриване на двойка по ключ
Object removedValue = map.remove(key);
// Проверка дали ключ съществува
boolean containsKey = map.containsKey(key);
// Проверка дали стойност съществува
boolean containsValue = map.containsValue(value);
// Получаване на всички ключове
Set<KeyType> keys = map.keySet();
// Получаване на всички стойности
Collection<ValueType> values = map.values();
// Получаване на всички записи (двойки ключ-стойност)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();
// Получаване на размера на Map
int size = map.size();
Използване на Map.Entry при итерация:
// Итерация по Entry set
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// ...
}