Вопрос проверяет понимание иерархии Collection Framework в Java и места интерфейса Map в ней.
В Java Collection Framework представляет собой единую архитектуру для хранения и управления группами объектов. Основным интерфейсом этой иерархии является Collection, от которого наследуются List, Set и Queue. Эти интерфейсы определяют поведение для упорядоченных списков, множеств уникальных элементов и очередей соответственно.
Интерфейс Map не наследует Collection. Он представляет собой отдельную ветвь, предназначенную для хранения ассоциативных массивов (пар ключ-значение). Несмотря на то, что Map часто включают в обсуждение Collection Framework из-за схожих целей (управление объектами), формально он не является его частью. Это различие важно для понимания API: методы add(), remove() и iterator() из Collection недоступны для Map.
import java.util.*;
public class MapExample {
public static void main(String[] args) {
// Map не является Collection
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
// Collection - это List, Set, Queue
Collection<String> list = new ArrayList<>();
list.add("Hello");
// Ошибка компиляции: Map не наследует Collection
// Collection<String> col = map;
// Получить представление ключей как Set (который является Collection)
Set<String> keys = map.keySet();
System.out.println(keys); // [Apple, Banana]
}
}Понимание этого различия помогает правильно выбирать структуры данных: для хранения пар ключ-значение используйте Map, для упорядоченных списков — List, для уникальных элементов — Set. Это также важно при работе с API, где ожидается Collection — вы не сможете передать туда Map напрямую.
Вывод: Map не является частью Collection Framework, но тесно связан с ним через методы, возвращающие коллекции (например, keySet()). Это разделение существует для чёткого разграничения ответственности между разными типами структур данных.