В пакете java.util содержится библиотека коллекций(collection framework), которая предоставляет большие возможности для работы с множествами, хэш-таблицами, векторами, разными видами списков и т.д.
Коллекция - это объект, способный хранить группу одинаковых элементов. Она содержит методы для операций с однородными данными. Изначально Java поддерживала работу с коллекциями в рамках классов Vector и Hashtable, но с появлением JDK 1.2 возможности работы с коллекциями были расширены, возникло много открытых интерфейсов и различных видов классов, которые были включены в библиотеку коллекций.
Основные преимущества классов collection framework(перед классами, разрабатываемыми самостоятельно) заключаются в следующем:
- ускоряется процесс разработки и улучшается качество кода;
- обеспечивается поддержка повторного использования кода;
- производится стандартизация интерфейса ваших классов;
- реализуется поддержка многопоточного доступа.
Проверке готовых классов-коллекций уделялось много внимания, поэтому правомерно говорить об улучшении качества кода. Данные классы можно считать хорошо отлаженными с минимальным количеством ошибок, что зачастую невозможно обеспечить в самостоятельных проектах.
Основу библиотеки составляют открытые интерфейсы, которые можно использовать для создания собственных коллекций. Каждый интерфейс объявляет набор методов, которые вы обязаны реализовать в своей программе:
- Collection - группа элементов(охватывает Set и List);
- Set - множество элементов(без дублирования);
- SortedSet - то же самое, что Set, только элементы упорядочены;
- List - упорядоченный список;
- Map - словарь, то есть коллекция, в которой каждый элемент имеет уникальный ключ;
- SortedMap - то же самое, что и Map, однако элементы упорядочены;
- Queue - интерфейс для работы с очередью.
Разумеется, интерфейсы были бы "пустыми", если бы в них не существовало встроенных классов, реализующих необходимые функций:
- ArrayList - список List как массив элементов;
- LinkedList - список List, выполняющий функции связанного списка;
- HashSet - множество Set как хэш-таблица;
- TreeSet - множество SortedSet, используемое как дерево;
- HashMap - индексированный словарь хэш;
- TreeMap - коллекция SortedMap древовидной структуры.
Задача каждого из интерфейсов - обеспечить простоту и удобство работы с большим количеством однотипных данных. Рассмотрим подробнее назначение каждого из этих интерфейсов.
- Collection - общий интерфейс, объединяющий интерфейсы Set и List. Содержит методы для добавления и удаления элементов коллекции, проверки их правильности, наличия и другие.
- Set - неупорядоченный набор неповторяющихся элементов. Расширяет интерфейс Collection. Если производится попытка добавить в набор элемент, который уже в нем содержится, она будет проигнорирована.
- List - служит для работы с упорядоченными коллекциями. К каждому элементы такой коллекции можно обратиться по индексу. Расширяет интерфейс Collection.
- Map - предназначен для работы с коллекциями-словарями, в которых содержатся ключи и соответствующие им значения(каждому ключу соответствует только одно значением). Словарь может содержать произвольное число элементов.
- Queue - содержит методы для работы с очередями: в них элементы добавляются с одного конца, а извлекаются с другого.
Интересное видео для наших читателей: