В отличие от обычных массивов класс ArrayList из пакета java.util является автоматически расширяемым массивом.
При создании объекта типа ArrayList необязательно указывать его размерность. Например:
ArrayList<Integer> list = new ArrayList<Integer>();
Достоинства ArrayList по сравнению с обычным массивом:
- Быстрый доступ к элементам по индексу за константное время O(1);
- доступ к элементам по значению за линейное время O(n);
- позволяет хранить любые значения в том числе и null.
Недостатки ArrayList:
Вставка/удаление элемента вызывает перезапись всех элементов, размещенных «правее» в списке на одну позицию влево, то есть работает за линейное время O(n);
Помните, что списки могут содержать только объекты, поэтому, если вы хотите хранить числа, используйте Integer вместо int . Integer является именем класса, и объект этого класса может содержать целочисленное значение. Подробнее почитать по классы и объекты можно здесь: Введение в объектно-ориентированное программирование
|
Есть два варианта добавления элемента в ArrayList:
add(значение); - добавление значения в конец ArrayList
add(индекс,значение); - добавление значение в нужное место по индексу.
Например:
arr.add(10);
arr.add(5,10);
|
Для получения значения элемента из ArrayList используется метод get(индекс)
Например:
Чтобы узнать количество элементов в массиве можно использовать методе size()
Например:
|
Для изменения значения по индексу в списке используйте name.set(index,value);
|
Есть два варианта добавления элемента в ArrayList:
add(значение); - добавление значения в конец ArrayList
add(индекс,значение); - добавление значение в нужное место по индексу.
Например:
arr.add(10);
arr.add(5,10);
|
Удалять элементы в ArrayList можно с помощью метода remove двумя способами:
- по индексу remove(index)
- по значению remove(value)
Например:
arr.remove(0); //удаляет первый элемент
arr.remove(new Integer(10)); //удаляет элемент со значением 10
|
В интерфейсе Collections также предоставляет методы для массовых операций, работы по всей коллекции:
containsAll - возвращает логическое значение 'true', если эта коллекция содержит все элементы в вызванной коллекции, иначе возвращает false.
addAll - добавляет все из указанных элементов в указанную коллекцию. Добавляемые элементы могут быть указаны по отдельности или в виде массива.
removeAll - используется для удаления всех элементов из списка, которые содержатся в указанной коллекции.
clear - удаление всех элементов
reverse - реверс массива
и т.д.
Например использование removeAll:
ArrayList<Integer> first = new ArrayList<Integer>();
first.add(1);
first.add(2);
first.add(3);
ArrayList<Integer> second = new ArrayList<Integer>();
second.add(1);
second.add(2);
//удаляет все элементы из второго списка, если они существует в первом списке
second.removeAll(first);
|