Интерфейс Map не наследует интерфейс Collection из-за фундаментальных различий в том, как они хранят данные. Хотя мапы концептуально являются коллекциями, их требования к реализации несовместимы с фреймворком Collection.
Требования к параметрам
add(Object o) — принимает один параметрСпециализированные операции Мапы требуют методов, специфичных для своей структуры:
keySet() — возвращает все ключиvalues() — возвращает все значенияentrySet() — возвращает пары ключ-значениеget(key) — получает значение по ключуИнтерфейс Collection не поддерживает эти операции, что делает их несовместимыми.
Переиспользуемость и согласованность
Избежание семантических конфликтов Включение Map в иерархию Collection потребовало бы:
add(), remove(), contains() с неясной семантикойРазделение Map позволяет разработчикам:
Этот дизайн демонстрирует здравые принципы объектно-ориентированного программирования, создав разные абстракции для действительно разных структур данных.
Сигнатура метода add(Object o) интерфейса Collection несовместима с Map, потому что maps требуют два параметра для сохранения пар ключ-значение, что делает прямое наследование невозможным.
Новый — ещё не проверен сообществом
Вы