В библиотеке коллекций Java существует два базовых интерфейса, реализации которых и представляют совокупность всех классов коллекций:
1. Collection – коллекция содержит набор объектов (элементов). Здесь определены основные методы для манипуляции с данными, такие как вставка (add, addAll), удаление (remove, removeAll, clear), поиск (contains).
2. Map – описывает коллекцию, состоящую из пар «ключ – значение». У каждого ключа только одно значение, что соответствует математическому понятию однозначной функции или отображения (mар). Такую коллекцию часто называют еще словарем (dictionary) или ассоциативным массивом (associative array).
Интерфейсы Collection и Map являются базовыми, но они не есть единственными. Их расширяют другие интерфейсы, добавляющие дополнительный функционал. О них мы ещё поговорим.
Интерфейс Collection содержит набор общих методов, которые используются в большинстве коллекций. Рассмотрим основные из них.
add(Object item) – добавляет в коллекцию новый элемент. Метод возвращает true, если добавление прошло удачно и false – если нет. Неудача может произойти только в том случае, если коллекция не допускает повторяющихся элементов (как, например, множество), а элемент уже присутствует в коллекции. Если элементы коллекции каким-то образом упорядочены, новый элемент добавляется в конец коллекции.
|
|
clear() – удаляет все элементы коллекции.
contains(Object obj) – возвращает true, если объект obj содержится в коллекции и false, если нет.
isEmpty() – проверяет, пуста ли коллекция.
remove(Object obj) – удаляет из коллекции элемент obj. Возвращает false, если такого элемента в коллекции не нашлось.
size() – возвращает количество элементов коллекции.
Существуют разновидности перечисленных методов, которые в качестве параметра принимают любую другую коллекцию. Например, метод addAll(Collection coll) добавляет все элементы другой коллекции coll в конец данной, метод removeAll(Collection coll) удаляет из коллекции все элементы, которые присутствуют также в коллекции coll, а метод retainAll(Collection coll) поступает наоборот, удаляя все элементы, кроме содержащихся в coll.
Метод toArray() возвращает все элементы коллекции в виде массива.
Рассмотрим основные интерфейсы, относящиеся к Collection (рисунок 1).
Рисунок 1
Как видно с диаграммы, интерфейс Collection не является базовым. Интерфейс Collection расширяет интерфейс Iterable, у которого есть только один метод iterator(). Это значит что любая коллекция, которая является наследником Iterable должна возвращать итератор.
Итератор – объект, абстрагирующийся за единым интерфейсом доступ к элементам коллекции. Итератор позволяет получить доступ к элементам любой коллекции без вникания в суть ее реализации.
Интерфейс Collection расширяют интерфейсы List, Set и Queue:
|
|
1) List – представляет собой неупорядоченную коллекцию, в которой допустимы дублирующие значения. Иногда их называют последовательностями (sequence). Элементы такой коллекции пронумерованы, начиная от нуля, к ним можно обратиться по индексу.
2) Set – описывает неупорядоченную коллекцию, не содержащую повторяющихся элементов. Это соответствует математическому понятию множества (set).
3) Queue – очередь. Это коллекция, предназначенная для хранения элементов в порядке, нужном для их обработки. В дополнение к базовым операциям интерфейса Collection, очередь предоставляет дополнительные операции вставки, получения и контроля.