В пакете 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 — содержит методы для работы с очередями: в них элементы добавляются с одного конца, а извлекаются с другого.
Интересное видео для наших читателей: