Класс ArrayList представляет обобщенную коллекцию, которая наследует свою функциональность от класса AbstractList и применяет интерфейс List. Проще говоря, ArrayList представляет простой список, аналогичный массиву, за тем исключением, что количество элементов в нем не фиксировано.
Скачать исходники для статьи можно ниже
Пример использования класса ArrayList в программе:
import java.util.ArrayList; public class CollectionApp { public static void main(String[] args) { ArrayList<String> states = new ArrayList<String>(); // добавим в список ряд элементов states.add("Германия"); states.add("Франция"); states.add("Великобритания"); states.add("Испания"); states.add(1, "Италия"); // добавляем элемент по индексу 1 System.out.println(states.get(1));// получаем 2-й объект states.set(1, "Дания"); // установка значения для 2-го объекта System.out.println("В списке " + states.size() + " элементов"); for(String state : states){ System.out.println(state); } if(states.contains("Германия")){ System.out.println("Список содержит государство Германия"); } // удалим несколько объектов states.remove("Германия"); states.remove(0); Object[] countries = states.toArray(); for(Object country : countries){ System.out.println(country); } } }
Вывод программы:
Италия
В списке 5 элементов
Германия
Дания
Франция
Великобритания
Испания
Список содержит государство Германия
Франция
Великобритания
Испания
Здесь объект ArrayList типизируется классом String, поэтому список будет хранить только строки. Поскольку класс ArrayList применяет интерфейс Collection Для добавления вызывается метод add. С его помощью мы можем добавлять объект в конец списка:
Также мы можем добавить объект на определенное место в списке, например, добавим объект на второе место (то есть по индексу 1, так как нумерация начинается с нуля):
Метод size() позволяет узнать количество объектов в коллекции. Проверку на наличие элемента в коллекции производится с помощью метода contains. И так же, как и с добавлением, мы можем удалить либо конкретный либо элемент по индексу
удаление первого элемента.
Получить определенный элемент по индексу мы можем с помощью метода get():
а установить элемент по индексу с помощью метода set:
С помощью метода toArray() мы можем преобразовать список в массив объектов. И поскольку класс ArrayList реализует интерфейс Iterable, то мы можем пробежаться по списку в цикле аля for-each:
Хотя мы можем свободно добавлять в объект ArrayList дополнительные объекты, в отличие от массива, однако в реальности ArrayList использует для хранения объектов опять же массив. Если в процессе программы добавляется гораздо больше, то создается новый массив, который может вместить в себя все количество.
Подобные перераспределения памяти уменьшают производительность. Поэтому, если мы точно знаем, что у нас список не будет либо с помощью метода
states.add("Германия")
states.add(1, "Италия")
А удаление с помощью метода remove.
элемент:
states.remove("Германия");
states.remove(0);
String state = states.get(1);
states.set(1, "Дания");
for(String state : states)
По умолчанию данный массив предназначен для 10 объектов.
содержать больше определенного количества элементов, например, 25, то мы можем сразу же явным образом установить это количество, либо в конструкторе:
ArrayList<String> states = new ArrayList<String>(25)
ensureCapacity: states.ensureCapacity(25)