Иерархия Collection
Общий интерфейс для разных структур
Большинство коллекций Java объединены общей системой интерфейсов. Это позволяет работать не с конкретным классом,
а с тем набором возможностей, который действительно нужен коду.
В центре этой системы находится интерфейс Collection<E>.
Он описывает базовые операции над группой элементов: добавить значение, удалить его, проверить наличие, узнать размер или очистить коллекцию. Конкретные ветви добавляют к этим операциям свои правила.
Collection<String> names = new ArrayList<>();
names.add("Ann");
names.add("Bob");
System.out.println(names.contains("Ann"));
System.out.println(names.size());
Главные ветви
List<E>— упорядоченная последовательность, где элементы могут повторяться.Set<E>— набор уникальных элементов.Queue<E>— структура для обработки элементов в определённом порядке.Deque<E>— очередь, у которой можно работать с обоими концами.
Эти интерфейсы не задают конкретное внутреннее устройство. Например, переменная типа
List<String> может ссылаться на разные реализации списка.
Это удобно: остальной код зависит от поведения List, а не от деталей конкретного класса.
А где Map?
Map<K, V> относится к Collections Framework, но не наследуется от
Collection. Причина в модели данных: обычная коллекция хранит отдельные элементы,
а Map хранит пары «ключ — значение».
Поэтому у карты свой набор основных операций: положить значение по ключу, получить его, проверить наличие ключа или удалить пару. Эту ветвь мы разберём отдельно.
List, обычно лучше написать
List<String> names = new ArrayList<>();,
а не привязывать переменную к ArrayList без необходимости.