Ответ
Строго говоря, Map (например, HashMap, TreeMap) не является коллекцией в иерархии Java, так как не реализует интерфейс Collection. Он представляет собой отдельную иерархию для работы с парами «ключ-значение».
Почему же его называют коллекцией?
В широком, неформальном смысле Map называют коллекцией, потому что он хранит и управляет набором объектов (элементов). Более того, сам Map предоставляет три представления (views), которые являются настоящими коллекциями (Collection или Set):
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 95);
scores.put("Bob", 87);
// Эти представления — настоящие коллекции:
Set<String> keys = scores.keySet(); // Коллекция ключей (Set)
Collection<Integer> values = scores.values(); // Коллекция значений (Collection)
Set<Map.Entry<String, Integer>> entries = scores.entrySet(); // Коллекция пар (Set)
Ключевые отличия Map от Collection: |
Признак | Map<K, V> |
Collection<E> |
|---|---|---|---|
| Элемент | Пара ключ-значение (Entry) |
Одиночный элемент (E) |
|
| Добавление | V put(K key, V value) |
boolean add(E e) |
|
| Получение | V get(Object key) |
Только через итератор или для List по индексу |
|
| Уникальность | Ключи уникальны | Элементы могут дублироваться (кроме Set) |
Вывод: Термин «коллекция» для Map используется в общем смысле «контейнер для данных». Технически же Map — это отдельная абстракция, тесно интегрированная с коллекциями через свои представления.