|
|||||||
Класс ArrayList и интерфейс List
Время создания: 01.11.2019 09:30
Раздел: INFO - Development - JAVA - Collection
Запись: wwwlir/Tetra/master/base/1572571801y4ruzp8pzx/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Пример инициализации contract.setFiles(new ArrayList<ContractFile>(){{add(cf);}}); Для создания простых списков применяется интерфейс List, который расширяет функцональность интерфейса Collection. Некоторые наиболее часто используемые методы интерфейса List:
По умолчанию в Java есть встроенная реализация этого интерфейса - класс ArrayList. Класс ArrayList представляет обобщенную коллекцию, которая наследует свою функциональность от класса AbstractList и применяет интерфейс List. Проще говоря, ArrayList представляет простой список, аналогичный массиву, за тем исключением, что количество элементов в нем не фиксировано. ArrayList имеет следующие конструкторы:
Емкость в ArrayList представляет размер массива, который будет использоваться для хранения объектов. При добавлении элементов фактически происходит перераспределение памяти - создание нового массива и копирование в него элементов из старого массива. Изначальное задание емкости ArrayList позволяет снизить подобные перераспределения памяти, тем самым повышая производительность. Используем класс ArrayList и некоторые его методы в программе:
Консольный вывод программы: Bob ArrayList has 5 elements Tom Robert Alice Kate Sam ArrayList contains Tom Alice Kate Sam Здесь объект ArrayList типизируется классом String, поэтому список будет хранить только строки. Поскольку класс ArrayList применяет интерфейс Collection<E>, то мы можем использовать методы данного интерфейса для управления объектами в списке. Для добавления вызывается метод add. С его помощью мы можем добавлять объект в конец списка: people.add("Tom"). Также мы можем добавить объект на определенное место в списке, например, добавим объект на второе место (то есть по индексу 1, так как нумерация начинается с нуля): people.add(1, "Bob") Метод size() позволяет узнать количество объектов в коллекции. Проверку на наличие элемента в коллекции производится с помощью метода contains. А удаление с помощью метода remove. И так же, как и с добавлением, мы можем удалить либо конкретный элемент people.remove("Tom");, либо элемент по индексу people.remove(0); - удаление первого элемента. Получить определенный элемент по индексу мы можем с помощью метода get(): String person = people.get(1);, а установить элемент по индексу с помощью метода set: people.set(1, "Robert"); С помощью метода toArray() мы можем преобразовать список в массив объектов. И поскольку класс ArrayList реализует интерфейс Iterable, то мы можем пробежаться по списку в цикле аля for-each: for(String person : people). Хотя мы можем свободно добавлять в объект ArrayList дополнительные объекты, в отличие от массива, однако в реальности ArrayList использует для хранения объектов опять же массив. По умолчанию данный массив предназначен для 10 объектов. Если в процессе программы добавляется гораздо больше, то создается новый массив, который может вместить в себя все количество. Подобные перераспределения памяти уменьшают производительность. Поэтому если мы точно знаем, что у нас список не будет содержать больше определенного количества элементов, например, 25, то мы можем сразу же явным образом установить это количество, либо в конструкторе: ArrayList<String> people = new ArrayList<String>(25);, либо с помощью метода ensureCapacity: people.ensureCapacity(25); |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|