Класс ArrayList
В отличие от обычных массивов класс ArrayList из пакета java.util является автоматически расширяемым массивом. При создании объекта типа ArrayList необязательно указывать его размерность. Например,
ArrayList list = new ArrayList();
Достоинства 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
|
Реверс ArrayList
В интерфейсе 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);
|