Коллекции в Java: что это такое и зачем они нужны

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

Интересное видео для наших читателей: