Введение
Помимо класса Arrays, Java предоставляет класс ArrayList, который можно использовать для создания контейнеров, в которых хранятся списки объектов. ArrayList можно рассматривать как растущий массив. Это дает вам быструю итерацию и быстрый произвольный доступ. ArrayList реализует новый интерфейс RandomAccess — интерфейс маркера (то есть у него нет методов), который говорит: «Этот список поддерживает быстрый (обычно с постоянным временем) произвольный доступ». Выберите это вместо LinkedList, если вам нужна быстрая итерация, но вряд ли вы будете выполнять много операций вставки и удаления.
В более ранних версиях Java есть один унаследованный класс коллекции под названием Vector, который очень похож на ArrayList. Vector реализует динамический массив. Vector — это в основном то же самое, что и ArrayList, но методы Vector синхронизируются для обеспечения безопасности потоков. Обычно вы хотите использовать ArrayList вместо Vector, потому что синхронизированные методы добавляют снижение производительности, которое вам может не понадобиться. В этом руководстве мы обсудим ArrayList только с учетом того, что все применимо и к вектору.
Класс java.util.ArrayList — один из наиболее часто используемых классов в рамках Collections Framework. ArrayList имеет динамически изменяемый размер, что означает, что его размер может изменяться во время выполнения программы. Это означает, что:
- Вы можете добавить элемент в любой момент в контейнере ArrayList, и размер массива автоматически увеличится для размещения нового элемента.
- Вы можете удалить элемент в любой точке контейнера ArrayList, и размер массива автоматически сократится.
Чтобы заявить очевидное: Arraylist — это упорядоченная коллекция (по индексу), но не отсортированная.
Чтобы использовать класс ArrayList, вы должны использовать следующий оператор импорта:
import java.util.ArrayList;
Затем, чтобы объявить ArrayList, вы можете использовать конструктор по умолчанию, как в следующем примере:
ArrayList names = new ArrayList ();
Конструктор по умолчанию создает ArrayList вместимостью 10 шт. Емкость ArrayList — это количество элементов, которые он может содержать без увеличения размера. Другие конструкторы ArrayList:
ArrayList names = new ArrayList (int size);
ArrayList names = new ArrayList (Collection c);
Вы также можете указать емкость/размер исходного ArrayList, а также создать ArrayList из других типов коллекций.
Некоторые из преимуществ ArrayList перед массивами:
- Он может динамически расти.
- Он обеспечивает более мощный механизмы вставки и поиска, чем массивы.
Методы ArrayList
Метод | Цель |
---|---|
public void add (Object) public void add (int, Object) | Добавляет элемент в ArrayList. Версия по умолчанию добавляет элемент в следующее доступное место; перегруженная версия позволяет указать позицию для добавления элемента |
public void remove (int) | Удаляет элемент из ArrayList в указанном месте |
public void set (int, Object) | Изменяет элемент в указанном ArrayList расположение |
Object get (int) | Извлекает элемент из указанного места в ArrayList |
public int size () | Возвращает текущий размер ArrayList |
Программа на Java для демонстрации использования всех вышеописанных методов. Здесь мы создаем ArrayList с именем myList и добавляем объекты с помощью метода add (), а также с помощью метода добавления на основе индекса, а затем печатаем все объекты с помощью цикла for. Затем мы демонстрируем использование методов get (), contains () и size (). вывод программы показан под кодом Java.
Код Java: перейдите в редактор
import java.util.ArrayList; открытый класс ArrayListDemo {public static void main (String [] args ) {//объявление Arraylist строковых объектовArrayList myList = new ArrayList ();//Добавление объектов в список массивов по умолчанию indexmyList.add ("Apple"); myList.add ("Mango"); myList .add ("Orange"); myList.add ("Grapes");//Добавление объекта по определенному индексу myList.add (1, "Orange"); myList.add (2, "Pinapple"); System.out.println ("Распечатать все объекты:"); for (String s: myList) {System.out.println (s);} System.out.println ("Объект с индексом 3 элемента из списка:" + myList.get (3 )); System.out.println ("Is Chicku в списке:" + myList.contains ("Chicku")); System.out.println ("Размер ArrayList:" + myList.size ()); myList. remove ("Папайя"); System.out.println ("Новый размер ArrayList:" + myList.size ());}}
Вывод:
Резюме:
- ArrayList и Vector — похожие классы Единственная разница в том, что в векторе все методы синхронизированы. Оба простых термина могут рассматриваться как растущий массив.
- ArrayList следует использовать в приложении, когда нам нужно искать объекты из списка на основе индекса.
- Производительность ArrayList снижается, когда в середине списка выполняется много операций вставки и обновления.
Редактор кода Java: