Методы ArrayList
| English | Русский |
|---|---|
| ArrayList/əˈreɪ lɪst/ | ArrayList |
Вставка изменяет последующие индексы
- Алгоритм ArrayList начинается со
[cat, dog]. Операцияadd(1, "owl")добавляет элемент в[cat, owl, dog], затем операцияremove(0)добавляет элемент в[owl, dog]. Операцияget(1)теперь возвращает"dog". - Отслеживайте весь список после каждой операции: вставка сдвигает последующие элементы вправо, удаление — влево. Индекс обозначает позицию, а не постоянную идентичность элемента.
Список имеет размер и тип элементов
- ArrayList хранит динамически расширяемую последовательность ссылок. Импортируйте
java.util.ArrayListи объявитеArrayList<String> names = new ArrayList<String>();; размер поначалу равен 0. - Тип параметра является ссылочным, поэтому для целых чисел используйте
Integerвместоint.size()подсчитывает сохранённые элементы; начальная ёмкость — это доступное пространство для расширения и не создаёт столько элементов.
Добавление или вставка внутри правых границ
add(x)добавляет элемент;add(i, x)вставляет перед текущим элементом на позиции i. Для вставки допустимые индексы варьируются от 0 до size включительно, поэтомуadd(size(), x)также работает как добавление.get(i)считывает существующий элемент, поэтому его индексы варьируются от 0 до size минус 1. В пустом списке нет допустимого индекса для get;get(size())выходит за границы, хотя вставка туда разрешена.
Для списка размером 2 добавление add(2, value) допустимо, но получение get(2) выходит за допустимые границы.
Вставка позволяет указывать позицию, равную размеру; получение требует существующего индекса, строго меньшего размера.
Замена и удаление возвращают разные результаты
set(i, x)заменяет существующий элемент и возвращает старое значение, не изменяя размер.remove(int i)удаляет элемент на этой позиции, возвращает его и уменьшает размер на единицу.- Перегруженный
remove(Object value)вместо этого удаляет первое равное значение и возвращает факт удаления совпадения. ВArrayList<Integer>remove(1)означает индекс 1; используйтеremove(Integer.valueOf(1)), чтобы удалить значение 1.
import java.util.ArrayList;
import java.util.Arrays;
public class RemoveChoice {
public static void main(String[] args) {
ArrayList<Integer> byIndex = new ArrayList<>(Arrays.asList(1, 2, 1));
ArrayList<Integer> byValue = new ArrayList<>(Arrays.asList(1, 2, 1));
int removed = byIndex.remove(1);
boolean found = byValue.remove(Integer.valueOf(1));
System.out.println(removed + " " + byIndex);
System.out.println(found + " " + byValue);
}
}
Два вывода — это 2 [1, 1] и true [2, 1]. Каждый список теряет один элемент, но разный.
add, get и remove
После вызова remove(0) элемент dog перемещается на индекс 0, а размер уменьшается до 1.
Как получить количество элементов в списке ArrayList list?
ArrayList использует метод size(); массивы используют свойство .length.
Для ArrayList list, содержащего как минимум три элемента, как получить доступ к элементу с индексом 2?
ArrayList использует метод get(i), а не синтаксис [i].
После вызова a.remove(0) для {cat, dog}, чему равно a.get(0)?
remove(0) удаляет cat; dog смещается на индекс 0.
Вы можете обратиться к элементу ArrayList с помощью квадратных скобок, например list[0].
ArrayList использует методы (get/set), а не синтаксис [].
add(x) с одним аргументом добавляет x...
add(x) добавляет в конец; add(i, x) вставляет элемент на индекс i.
Начиная с [1, 2, 1], вызывается remove(1) с аргументом типа int. Какое значение возвращается?
Пергрузка для int удаляет индекс 1, элементом которого является 2.
Выбор по объявленному типу аргумента
- Java выбирает перегрузку на основе типа аргумента.
int index = 1; list.remove(index);удаляет позицию 1;Integer value = 1; list.remove(value);выбирает удаление по значению. - Список String может удалить элемент
"owl"по значению или элемент по индексу 0 по позиции. Решите, что именно вы имеете в виду, прежде чем отслеживать сдвиги; отсутствие равного значения возвращает false и оставляет список неизменным.
Массивы используют a[i] и a.length; ArrayList использует get(i) и size(). Держите границы вставки отдельно от границ существующих элементов и не предполагайте, что аргумент, похожий на целое число, при вызове remove всегда означает сохранённое значение.
Проверьте одну замену и одно неудачное удаление
- Начиная с
[owl, dog],set(1, "fox")возвращает"dog"и оставляет[owl, fox]с размером 2. Затемremove("cat")возвращает false и ничего не меняет. - Проверяйте пустые списки, первую/последнюю допустимую позицию и отсутствующее значение. Считывайте перегрузку и её возвращаемое значение, а также resulting список; замена, вставка и удаление имеют разные контракты.
ArrayList — это расширяемая последовательность, доступ к которой осуществляется через методы. Вставляйте от 0 до size; читайте, заменяйте или удаляйте существующую позицию от 0 до size минус 1. remove(int) удаляет позицию; remove(Object) удаляет первое равное значение, если оно найдено.
After the stated insertion and removal, type the value returned by get(0).
The final list is [owl, dog], with owl at index 0.