Интерфейс Java Map: полное руководство по Map, его реализациям и ключевым методам
Интерфейс Java Map
Это руководство углубляется в интерфейс Map в Java, охватывая его структуру, реализации, ключевые методы и реальное использование.
Интерфейс Map, часть пакета java.util, обеспечивает основу для коллекций пар ключ/значение в Java Collections Framework.
Как работает Map
В Java Map хранит данные как уникальные пары ключ/значение. Каждый ключ уникален и отображается на одно значение, гарантируя отсутствие дублирующихся ключей.
Мы можем получить или обновить значение, обращаясь к его ключу.
Например, ключи us, br и es отображаются на значения United States, Brazil и Spain соответственно.
Особенно, интерфейс Map управляет тремя отдельными коллекциями:
- Набор всех ключей
- Набор всех значений
- Набор всех ассоциаций ключ/значение (записей)
Эти наборы позволяют получать доступ к ключам, значениям или записям независимо.
Классы, реализующие Map
Поскольку Map — интерфейс, его нельзя инстанцировать напрямую. Вместо этого используйте один из следующих конкретных классов, все из которых находятся в пакете java.util:
HashMapEnumMapLinkedHashMapWeakHashMapTreeMap
Подинтерфейсы, расширяющие Map
Интерфейс Map расширяется несколькими специализированными подинтерфейсами, добавляющими гарантии упорядочивания или параллелизма:
SortedMap— хранит записи, отсортированные по ключам.NavigableMap— расширяетSortedMapметодами навигации.ConcurrentMap— предоставляет потокобезопасные операции.
Использование Map в коде
Сначала импортируйте интерфейс:
import java.util.Map;
Затем создайте конкретный экземпляр. Например, используя HashMap:
// Реализация Map через HashMap
Map<Key, Value> numbers = new HashMap<>();
Здесь Key представляет уникальный идентификатор, а Value — связанные данные.
Основные методы Map
Помимо методов интерфейса Collection, Map предлагает специализированные операции:
- put(K, V) — добавляет пару ключ/значение; заменяет значение, если ключ уже существует.
- putAll() — объединяет записи другой карты в эту.
- putIfAbsent(K, V) — вставляет только тогда, когда ключ ещё не отображен.
- get(K) — получает значение для данного ключа, или
null, если отсутствует. - getOrDefault(K, defaultValue) — возвращает отображенное значение или указанное по умолчанию.
- containsKey(K) — проверяет наличие ключа.
- containsValue(V) — проверяет наличие значения.
- replace(K, V) — обновляет значение для ключа.
- replace(K, oldValue, newValue) — условная замена, когда текущее значение совпадает.
- remove(K) — удаляет запись для ключа.
- remove(K, V) — удаляет запись только если ключ отображает указанное значение.
- keySet() — возвращает
Setвсех ключей. - values() — возвращает
Collectionвсех значений. - entrySet() — возвращает
Setвсех отображений ключ/значение.
Примеры реализаций Map
1. Пример HashMap
import java.util.Map;
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Создание карты через HashMap
Map<String, Integer> numbers = new HashMap<>();
// Вставка элементов в карту
numbers.put("One", 1);
numbers.put("Two", 2);
System.out.println("Map: " + numbers);
// Доступ к ключам карты
System.out.println("Keys: " + numbers.keySet());
// Доступ к значениям карты
System.out.println("Values: " + numbers.values());
// Доступ к записям карты
System.out.println("Entries: " + numbers.entrySet());
// Удаление элемента из карты
int value = numbers.remove("Two");
System.out.println("Removed Value: " + value);
}
}
Вывод
Map: {One=1, Two=2} Keys: [One, Two] Values: [1, 2] Entries: [One=1, Two=2] Removed Value: 2
Для более подробной информации о HashMap посетите Java HashMap.
2. Пример TreeMap
import java.util.Map;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// Создание Map через TreeMap
Map<String, Integer> values = new TreeMap<>();
// Вставка элементов в карту
values.put("Second", 2);
values.put("First", 1);
System.out.println("Map using TreeMap: " + values);
// Замена значений
values.replace("First", 11);
values.replace("Second", 22);
System.out.println("New Map: " + values);
// Удаление элементов из карты
int removedValue = values.remove("First");
System.out.println("Removed Value: " + removedValue);
}
}
Вывод
Map using TreeMap: {First=1, Second=2} New Map: {First=11, Second=22} Removed Value: 11
Для более подробной информации о TreeMap посетите Java TreeMap.
java
- Освоение интерфейсов в C#: определение, реализация и практические примеры
- Освоение операторов Java: типы, синтаксис и практические примеры
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
- Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
- Интерфейсы в Java: определение, использование и лучшие практики
- Java 9 Collection Factory Methods: удобное создание неизменяемых List, Set, Map
- Java 9 Private Interface Methods: инкапсуляция и повторное использование кода