- java.lang.Object
- java.util.AbstractCollection <E>
- java.util.AbstractList <E>
- java.util.ArrayList<E>
- Параметры типа
E- тип элементов в этом списке Все реализованные интерфейсы
Serializable,Cloneable,Iterable<E>,Collection<E>,List<E>,RandomAccess
- Известные прямые подклассы:
AttributeList,RoleList,RoleUnresolvedList
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
ListРеализация массива с изменяемым размером для интерфейса. Реализует все необязательные операции списка и допускает все элементы, включаяnull。 Помимо реализацииListинтерфейса этот класс предоставляет методы для управления размером массива, который используется для хранения списка. (Этот класс примерно эквивалентенVector,но не синхронизирован.) Этотsize,isEmpty,get,set,iterator和listIteratorвыполняются за фиксированное время.addОперация выполняется за амортизированное постоянное время, то есть добавление n элементов требует времени O(n). Все остальные операции выполняются за линейное время (примерно). По сравнению сLinkedListреализацией постоянный множитель ниже.Каждый
ArrayListэкземпляр имеет емкость. Емкость — это размер массива, который хранит элементы списка. Она всегда не меньше размера списка. При добавлении элементов в ArrayList емкость автоматически увеличивается. Помимо того, что добавление элемента имеет постоянную амортизированную стоимость, детали стратегии роста не определены.Перед добавлением большого количества элементов с помощью
ensureCapacityоперации приложение может увеличитьArrayListемкость экземпляра. Это уменьшает количество постепенных перераспределений.Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к
ArrayListэкземпляру и хотя бы один поток структурно изменяет список, необходима внешняя синхронизация. (Структурное изменение — это любая операция, которая добавляет или удаляет один или несколько элементов или явно изменяет размер массива. Только установка значения элемента не является структурным изменением.) Обычно это достигается синхронизацией объекта, который естественно инкапсулирует список. Если такого объекта нет, список нужно «обернуть» с помощьюCollections.synchronizedListметода. Это лучше сделать при создании, чтобы предотвратить случайный несинхронизированный доступ к списку:List list = Collections.synchronizedList(new ArrayList(...));Итераторы, возвращаемые методами
iteratorиlistIteratorэтого класса, работают по принципу быстрого отказа: если после создания итератора список структурно изменяется любым способом, кроме вызова собственных методовremoveилиaddитератора, итератор выбрасываетConcurrentModificationException。 Поэтому при параллельном изменении итератор быстро и чисто завершается с ошибкой, а не рискует произвольным недетерминированным поведением в неопределенный момент в будущем.Обратите внимание, что быстрый отказ итератора нельзя гарантировать, потому что при наличии несинхронизированных параллельных изменений невозможно дать жесткие гарантии. Итератор с быстрым отказом выбрасывает
ConcurrentModificationExceptionв режиме максимального усилия. Поэтому неправильно писать программу, которая полагается на это исключение для обеспечения корректности: быстрый отказ итератора нужен только для обнаружения ошибок.- Начиная с версии: 1.2 См. также:
Collection,List,LinkedList,Vector, Serialized Form
-
-
字段汇总
-
声明的属性在类 java.util.AbstractList
modCount
-
-
构造方法摘要
Конструктор Описание ArrayList()Создаёт пустой список с начальной ёмкостью 10.ArrayList(int initialCapacity)Создаёт пустой список с указанной начальной ёмкостью.ArrayList(Collection<? extends E> c)Создаёт список с элементами указанной коллекции в порядке её итератора.
-
方法摘要
Все методы Методы экземпляра Конкретные методы Переменная и тип Метод Описание voidadd(int index, E element)Вставляет указанный элемент в указанную позицию этого списка.booleanadd(E e)Добавляет указанный элемент в конец этого списка.booleanaddAll(int index, Collection<? extends E> c)Вставляет все элементы указанной коллекции в этот список, начиная с указанной позиции.booleanaddAll(Collection<? extends E> c)Добавляет все элементы указанной коллекции в конец этого списка в порядке, который возвращает Iterator этой коллекции.voidclear()Удаляет все элементы из этого списка.Objectclone()Возвращает поверхностную копию этогоArrayListэкземпляра.booleancontains(Object o)Возвращает true, если этот список содержит указанныйtrue。voidensureCapacity(int minCapacity)При необходимости увеличивает ёмкость этогоArrayListэкземпляра, чтобы он вмещал минимум элементов, указанный параметром minimum capacity.voidforEach(Consumer<? super E> action)Выполняет заданное действие дляIterableкаждого элемента, пока не обработаетIterableвсе элементы или пока действие не выбросит исключение.Eget(int index)Возвращает элемент этого списка в указанной позиции.intindexOf(Object o)Возвращает индекс первого вхождения указанного элемента в этом списке, или -1, если список не содержит этот элемент.booleanisEmpty()Возвращает true, если этот список не содержитtrue。Iterator<E>iterator()Возвращает итератор элементов этого списка в правильном порядке.intlastIndexOf(Object o)Возвращает индекс последнего вхождения указанного элемента в этом списке, или -1, если список не содержит этот элемент.ListIterator<E>listIterator()Возвращает итератор списка элементов этого списка в правильном порядке.ListIterator<E>listIterator(int index)Возвращает итератор списка элементов этого списка в правильном порядке, начиная с указанной позиции.Eremove(int index)Удаляет элемент этого списка в указанной позиции.booleanremove(Object o)Удаляет первое вхождение указанного элемента из этого списка, если оно есть.booleanremoveAll(Collection<?> c)Удаляет из этого списка все элементы, которые содержатся в указанной коллекции.booleanremoveIf(Predicate<? super E> filter)Удаляет все элементы этой коллекции, которые удовлетворяют заданному предикату.protected voidremoveRange(int fromIndex, int toIndex)Удаляет из этого списка все элементы с индексами отfromIndex(включительно) доtoIndex(не включая).booleanretainAll(Collection<?> c)Оставляет в этом списке только элементы, которые содержатся в указанной коллекции.Eset(int index, E element)Заменяет элемент этого списка в указанной позиции на указанный элемент.intsize()Возвращает количество элементов в этом списке.Spliterator<E>spliterator()Создаёт late-binding и fail-fastSpliteratorдля элементов этого списка.List<E>subList(int fromIndex, int toIndex)Возвращает указанныйfromIndex(включительно)иtoIndex(не включительно)представление этой части списка.Object[]toArray()Возвращает массив, содержащий все элементы этого списка, в правильном порядке(от первого элемента до последнего).<T> T[]toArray(T[] a)Возвращает массив, содержащий все элементы этого списка, в правильном порядке(от первого элемента до последнего); тип возвращаемого массива во время выполнения совпадает с типом указанного массива.voidtrimToSize()Регулирует ёмкость этогоArrayListэкземпляра до текущего размера списка.-
声明方法的类 java.util.AbstractList
equals, hashCode
-
声明方法的类 java.util.AbstractCollection
containsAll, toString
-
声明方法的接口 java.util.Collection
parallelStream, stream, toArray
-
声明方法的接口 java.util.List
containsAll, equals, hashCode, replaceAll, sort
-
-
-
-
构造方法详细信息
-
ArrayList
public ArrayList(int initialCapacity)
Создаёт пустой список с указанной начальной ёмкостью.- Параметры
initialCapacity- начальная ёмкость списка ИсключенияIllegalArgumentException- если указанная начальная ёмкость отрицательна
-
ArrayList
public ArrayList()
Создаёт пустой список с начальной ёмкостью 10.
-
ArrayList
public ArrayList(Collection<? extends E> c)
Создаёт список, содержащий элементы указанной коллекции, в порядке, который возвращает её итератор.- Параметры
c-cколлекция, элементы которой помещаются в этот список ИсключенияNullPointerException- если указанная коллекция равна null
-
-
方法详细信息
-
trimToSize
public void trimToSize()
Регулирует ёмкость этогоArrayListэкземпляра до текущего размера списка. Приложение использует эту операцию, чтобы минимизировать памятьArrayListэкземпляра.
-
ensureCapacity
public void ensureCapacity(int minCapacity)
При необходимости увеличивает ёмкость этогоArrayListэкземпляра, чтобы он вмещал не меньше элементов, чем указано в параметре минимальной ёмкости.- Параметры
minCapacity- требуемая минимальная ёмкость
-
size
public int size()
Возвращает количество элементов в этом списке.
-
isEmpty
public boolean isEmpty()
Возвращает true, если этот список не содержит элементовtrue。- Specified by:
isEmpty在界面Collection<E>- Specified by:
isEmpty,界面List<E>- Переопределяет:
isEmpty在课程AbstractCollection<E>- Результат
trueЕсли этот список не содержит элементов
-
contains
public boolean contains(Object o)
Возвращает true, если этот список содержит указанный элементtrue。 Более формально, возвращает truetrueтогда и только тогда, когда этот список содержит хотя бы один элементeObjects.equals(o, e)。- Specified by:
contains在界面Collection<E>- Specified by:
contains在界面List<E>- Переопределяет:
contains在课程AbstractCollection<E>- Параметры
o- элемент, наличие которого проверяется в этом списке Результатtruetrue, если этот список содержит указанный элемент
-
indexOf
public int indexOf(Object o)
Возвращает индекс первого вхождения указанного элемента в этот список, или -1, если список не содержит этот элемент. Более формально, возвращает наименьший индексi如Objects.equals(o, get(i)), или -1, если такого индекса нет.
-
lastIndexOf
public int lastIndexOf(Object o)
Возвращает индекс последнего вхождения указанного элемента в этот список, или -1, если список не содержит этот элемент. Более формально, возвращает наибольший индексi如Objects.equals(o, get(i)), если такого индекса нет, возвращает -1.- Specified by:
lastIndexOf在界面List<E>- Переопределяет:
lastIndexOfв классеAbstractList<E>- Параметры
o- элемент для поиска. Результат: индекс последнего вхождения указанного элемента в этом списке. Если список не содержит этот элемент, возвращает -1.
-
clone
public Object clone()
Возвращает поверхностную копию этогоArrayListэкземпляра. (Сами элементы не копируются.)
-
toArray
public Object[] toArray()
Возвращает массив, содержащий все элементы этого списка, в правильном порядке от первого элемента к последнему. Возвращённый массив будет «безопасным», потому что этот список не сохраняет ссылку на него. (Иначе говоря, этот метод выделяет новый массив.) Поэтому вызывающий может свободно изменять возвращённый массив.Этот метод служит мостом между API на основе массивов и API на основе коллекций.
- Specified by:
toArray,界面Collection<E>- Specified by:
toArray在界面List<E>- Переопределяет:
toArray在课程AbstractCollection<E>- Результат: массив, содержащий все элементы этого списка в правильном порядке. См. также:
Arrays.asList(Object[])
-
toArray
public <T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этого списка в правильном порядке от первого элемента к последнему. Тип возвращённого массива во время выполнения равен типу указанного массива. Если список помещается в указанный массив, метод возвращает его. Иначе программа выделяет новый массив с типом указанного массива во время выполнения и размером этого списка. Если список помещается в указанный массив и в нём есть свободное место (то есть элементов в массиве больше, чем в списке), элементы массива сразу после конца коллекции устанавливаются вnull. (Это полезно при определении длины списка, только если вызывающий знает, что список не содержит элементов null.)- Specified by:
toArray,界面Collection<E>- Specified by:
toArray,界面List<E>- Переопределяет:
toArray在课程AbstractCollection<E>- Параметры типа
T- тип компонентов массива, в который нужно включить коллекцию. Параметрыa- массив для хранения элементов списка. Если он достаточно большой, используется он. Иначе программа выделяет для этой цели новый массив того же типа во время выполнения. Результат: массив, содержащий элементы списка. ИсключенияArrayStoreException- если тип указанного массива во время выполнения не является супертипом типа каждого элемента этого спискаNullPointerException- если указанный массив равен null
-
get
public E get(int index)
Возвращает элемент этого списка в указанной позиции.- Specified by:
get,界面List<E>- Specified by:
get在课程AbstractList<E>- Параметры
index- индекс возвращаемого элемента Результат элемент в указанной позиции этого списка ИсключенияIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index >= size())
-
set
public E set(int index, E element)
Заменяет элемент в указанной позиции этого списка на указанный элемент.- Specified by:
set,界面List<E>- Переопределяет:
set在课程AbstractList<E>- Параметры
index- индекс заменяемого элементаelement- элемент для сохранения в указанной позиции Результат элемент, ранее находившийся в указанной позиции ИсключенияIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index >= size())
-
add
public boolean add(E e)
Добавляет указанный элемент в конец этого списка.- Specified by:
add,界面Collection<E>- Specified by:
add在界面List<E>- Переопределяет:
add在课程AbstractList<E>- Параметры
e- элемент для добавления в этот список Результатtrue(указано вCollection.add(E))
-
add
public void add(int index, E element)Вставляет указанный элемент в указанную позицию этого списка. Сдвигает элемент в текущей позиции (если он есть) и все последующие элементы вправо (добавляет единицу к индексу).- Specified by:
addin интерфейсеList<E>- Переопределяет:
add在课程AbstractList<E>- Параметры
index- индекс для вставки указанного элементаelement- элемент для вставки ИсключенияIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index > size())
-
remove
public E remove(int index)
Удаляет элемент из этого списка по указанной позиции. Сдвигает все последующие элементы влево (вычитает один из их индексов).- Specified by:
remove在界面List<E>- Переопределяет:
remove在课程AbstractList<E>- Параметры
index- индекс удаляемого элемента Результат удалённый из списка элемент ИсключенияIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index >= size())
-
remove
public boolean remove(Object o)
Удаляет первое вхождение указанного элемента из этого списка, если оно есть. Если список не содержит этот элемент, он не изменяется. Точнее, удаляется элемент с наименьшим индексомiтаким, чтоObjects.equals(o, get(i))(если такой элемент существует). Возвращаетtrue, если этот список содержит указанный элемент (или, эквивалентно, если этот список изменился в результате вызова).- Specified by:
remove在界面Collection<E>- Specified by:
remove在界面List<E>- Переопределяет:
remove在课程AbstractCollection<E>- Параметры
o- элемент, который нужно удалить из этого списка, если он есть Результатtrueесли этот список содержит указанный элемент
-
clear
public void clear()
Удаляет все элементы из этого списка. После возврата из этого вызова список будет пуст.- Specified by:
clear在界面Collection<E>- Specified by:
clear在界面List<E>- Переопределяет:
clear在课程AbstractList<E>
-
addAll
public boolean addAll(Collection<? extends E> c)
Добавляет все элементы из указанной коллекции в конец этого списка в порядке, который возвращает Iterator этой коллекции. Если указанная коллекция изменяется во время операции, поведение этой операции не определено. (Это значит, что если указанная коллекция является этим списком и этот список не пуст, поведение этого вызова не определено.)- Specified by:
addAll,界面Collection<E>- Specified by:
addAll在界面List<E>- Переопределяет:
addAll在课程AbstractCollection<E>- Параметры
c- коллекция, содержащая элементы для добавления в этот список Результатtruetrue, если этот список изменился в результате вызова ИсключенияNullPointerException- если указанная коллекция равна null См. также:AbstractCollection.add(Object)
-
addAll
public boolean addAll(int index, Collection<? extends E> c)Вставляет все элементы из указанной коллекции в этот список, начиная с указанной позиции. Сдвигает элемент в текущей позиции (если он есть) и все последующие элементы вправо (увеличивает их индексы). Новые элементы появятся в списке в том порядке, в котором их возвращает итератор указанной коллекции.- Specified by:
addAll在界面List<E>- Переопределяет:
addAll在课程AbstractList<E>- Параметры
index- индекс, с которого вставляется первый элемент из указанной коллекцииc- коллекция, содержащая элементы для добавления в этот список Результатtruetrue, если этот список изменился в результате вызова ИсключенияIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index > size())NullPointerException- если указанная коллекция равна null
-
removeRange
protected void removeRange(int fromIndex, int toIndex)Удаляет из этого списка все элементы с индексами междуfromIndex(включительно) иtoIndex(не включая). Сдвигает все последующие элементы влево (уменьшает их индексы). Этот вызов сокращает список на(toIndex - fromIndex)элементов. (ЕслиtoIndex==fromIndex, операция не действует.)- Переопределяет:
removeRange在课程AbstractList<E>- Параметры
fromIndex- индекс первого удаляемого элементаtoIndex- индекс после последнего удаляемого элемента ИсключенияIndexOutOfBoundsException- еслиfromIndexилиtoIndex超出范围(fromIndex < 0 || toIndex > size() || toIndex < fromIndex)
-
removeAll
public boolean removeAll(Collection<?> c)
Удаляет из этого списка все элементы, содержащиеся в указанной коллекции.- Specified by:
removeAll在界面Collection<E>- Specified by:
removeAll在界面List<E>- Переопределяет:
removeAll在课程AbstractCollection<E>- Параметры
c- коллекция, содержащая элементы, которые нужно удалить из этого списка Результатtruetrue, если этот список изменился в результате вызова ИсключенияClassCastException- если класс элементов этого списка несовместим с указанной коллекцией ( optional )NullPointerException- если этот список содержит элемент null, а указанная коллекция не допускает элементы null ( optional ), или указанная коллекция равна null См. также:Collection.contains(Object)
-
retainAll
public boolean retainAll(Collection<?> c)
Оставляет в этом списке только элементы, содержащиеся в указанной коллекции. Иначе говоря, удаляет из этого списка все элементы, не содержащиеся в указанной коллекции.- Specified by:
retainAll在界面Collection<E>- Specified by:
retainAll在界面List<E>- Переопределяет:
retainAll在课程AbstractCollection<E>- Параметры
c- коллекция, содержащая элементы, которые нужно сохранить в этом списке Результатtruetrue, если этот список изменился в результате вызова ИсключенияClassCastException- если класс элементов этого списка несовместим с указанной коллекцией ( optional )NullPointerException- если этот список содержит элемент null, а указанная коллекция не допускает элементы null ( optional ), или указанная коллекция равна null См. также:Collection.contains(Object)
-
listIterator
public ListIterator<E> listIterator(int index)
Возвращает итератор списка элементов этого списка в правильном порядке, начиная с указанной позиции. Указанный индекс обозначает первый элемент,nextкоторый вернёт начальный вызовprevious. Начальный вызов- вернёт элемент с индексом, равным указанному индексу минус 1. Возвращаемый итератор списка является fail-fast .
listIterator在界面List<E>- В интерфейсе
listIterator在课程AbstractList<E>- В классе
indexПараметрыnext- индекс первого элемента, который вернёт итератор списка (при вызовеIndexOutOfBoundsException- 如果指数超出范围(index < 0 || index > size()- если индекс вне диапазона (
-
listIterator
public ListIterator<E> listIterator()
- Возвращает итератор списка элементов этого списка в правильном порядке. Возвращаемый итератор списка является fail-fast .
listIterator,界面List<E>- В интерфейсе
listIterator在课程AbstractList<E>- В классе Результат итератор списка элементов этого списка в правильном порядке См. также:
listIterator(int)
-
iterator
public Iterator<E> iterator()
Возвращает итератор элементов этого списка в правильном порядке. Возвращаемый итератор является fail-fast.
-
subList
public List<E> subList(int fromIndex, int toIndex)
Возвращает представление части этого списка между указанными значениямиfromIndex(включительно) иtoIndex(исключительно). ЕслиfromIndex和toIndexравны, возвращается пустой список. Возвращаемый список опирается на этот список. Поэтому неструктурные изменения в возвращаемом списке отражаются в этом списке, и наоборот. Возвращаемый список поддерживает все необязательные операции списка. Этот метод устраняет необходимость явных операций с диапазонами, которые обычно требуются для массивов. Любая операция, требующая списка, может использоваться как операция с диапазоном. Для этого передайте представление subList вместо всего списка. Например, следующая идиома удаляет диапазон элементов из списка:list.subList(from, to).clear();Подобные идиомы можно построить дляindexOf(Object)иlastIndexOf(Object). Все алгоритмы из классаCollectionsможно применять к подсписку. Если опорный список, то есть этот список, структурно изменяется любым способом, кроме через возвращаемый список, семантика возвращаемого списка становится неопределённой. Структурная модификация — это изменение размера списка или другое нарушение его структуры. Итерация в процессе такой модификации может дать неверные результаты.- Specified by:
subList,界面List<E>- Переопределяет:
subList在课程AbstractList<E>- Параметры
fromIndex-fromIndexнижняя граница (включительно)toIndex-toIndexверхняя граница (исключительно) Результат: представление указанного диапазона этого списка ИсключенияIndexOutOfBoundsException- если значение индекса конечной точки выходит за пределы диапазона(fromIndex < 0 || toIndex > size)-
IllegalArgumentException- если индексы конечных точек не упорядочены(fromIndex > toIndex)
-
forEach
public void forEach(Consumer<? super E> action)
Описание скопировано из интерфейса:IterableВыполняет заданное действие для каждого элементаIterable, пока не будут обработаны все элементыIterableили пока действие не выбросит исключение. Если порядок указан, действия выполняются в порядке итерации. Исключения, выброшенные действием, передаются вызывающему. Если действие изменяет базовый источник элементов, поведение метода не определено. Исключение составляют случаи, когда переопределяющий класс задал политику параллельных изменений.- Specified by:
forEach在界面Iterable<E>- Параметры
action- Операция, выполняемая для каждого элемента ИсключениеNullPointerException- если указанная операция равна null
-
spliterator
public Spliterator<E> spliterator()
Создание late-binding и fail-fast доступа к элементам этого списка.Spliterator。 ЭтотSpliteratorОтчётSpliterator.SIZED,Spliterator.SUBSIZEDиSpliterator.ORDERED。 Переопределённые реализации должны документировать отчёт о дополнительных значениях характеристик.- Specified by:
spliterator在界面Collection<E>- Specified by:
spliterator在界面Iterable<E>- Specified by:
spliterator在界面List<E>- Результат элементы этого списка были обработаны
Spliterator- Начиная с версии: 1.8
-
removeIf
public boolean removeIf(Predicate<? super E> filter)
Описание скопировано из интерфейса:CollectionУдаляет все элементы этой коллекции, удовлетворяющие заданному предикату. Ошибки или исключения времени выполнения, возникшие во время итерации или в предикате, передаются вызывающему.- Specified by:
removeIf, интерфейсCollection<E>- Параметры
filter- предикат, который возвращаетtrueдля удаляемых элементов РезультатtrueУдалены ли какие-либо элементы? ИсключениеNullPointerException- если указанный фильтр равен null
-
-