Java: Списки
Теория: ArrayList
Наиболее часто используемая коллекция в Java – это список элементов с произвольным доступом. Такой список во многом напоминает массив, но с возможностью динамического добавления элементов.
Списки в Java представлены набором классов, реализующий интерфейс List, в котором описаны общие методы для работы со списками, такими как проверка на существование, добавление, извлечение, замена и другими.
Сами классы, в первую очередь, отличаются друг от друга способом организации (структурой данных) внутри себя. Это происходит из-за того, что не существует универсально эффективного способа создать динамический список. Создатели языка Java решили предложить программистам набор разных реализаций, которые программисты должны выбирать в зависимости от того, какая реализация окажется наиболее эффективной для их ситуации. На практике такое происходит не часто и в большинстве случаев используется ArrayList, который мы и рассмотрим в этом уроке.
В этом примере мы создали пустую коллекцию, в которую добавили два элемента с помощью метода add(), распечатали на экран и дальше провели набор типовых действий:
contains()- проверяет наличие элемента в коллекции.get()- возвращает элемент по его индексу. Индексация, как и в массивах, начинается с нуля. Обращение к несуществующему индексу приводит к исключению.size()возвращает количество элементов.
Комбинируя эти методы, можно получить последний элемент в коллекции:
В коде используется новый для нас синтаксис с угловыми скобками ArrayList<String>. Технически это называется дженериком, но проходить мы их будем позже, так как это довольно хитрая концепция. Сейчас же просто запомните, что коллекции – это контейнеры элементов одного типа, поэтому в коллекциях всегда нужно указывать то, что будет внутри них храниться. Вот несколько примеров:
Кроме добавления элементов, их можно изменять и удалять. Метод set() заменяет элемент списка по указанному индексу на новый:
Метод remove() удаляет элемент списка на основе его индекса:
Если у списка есть начальный набор элементов и он достаточно большой, то их можно указать сразу с помощью метода List.of(). Единственное нужно учитывать, что List.of() создает неизменяемый список, то есть его элементы можно использовать, но изменять сам список нельзя. Чтобы добавить возможность его изменения, нужно выполнить его преобразование в ArrayList.
В таком случае Java выводит тип самостоятельно на основе типа первого параметра в List.of(). То же самое происходит и в ArrayList.
Apache Commons Collections
Стандартная библиотека предоставляет множество полезных методов для работы со списками, но даже их недостаточно для всех возникающих ситуаций. Поэтому полезно знать про библиотеку commons-collections4, в которой содержится огромное количество полезных методов на все случаи жизни. Мы будем использовать эту библиотеку как в этом, так и в последующих курсах.


