模块  java.base
Пакет java.util

Class 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в режиме максимального усилия. Поэтому неправильно писать программу, которая полагается на это исключение для обеспечения корректности: быстрый отказ итератора нужен только для обнаружения ошибок.

    Этот класс входит в Java Collections Framework.

    Начиная с версии: 1.2 См. также:
    Collection,List,LinkedList,Vector, Serialized Form
    • 构造方法摘要

      Конструктор Описание
      ArrayList()
      Создаёт пустой список с начальной ёмкостью 10.
      ArrayList​(int initialCapacity)
      Создаёт пустой список с указанной начальной ёмкостью.
      ArrayList​(Collection<? extends E> c)
      Создаёт список с элементами указанной коллекции в порядке её итератора.
    • 方法摘要

      Все методы Методы экземпляра Конкретные методы Переменная и тип Метод Описание
      void add​(int index, E element)
      Вставляет указанный элемент в указанную позицию этого списка.
      boolean add​(E e)
      Добавляет указанный элемент в конец этого списка.
      boolean addAll​(int index, Collection<? extends E> c)
      Вставляет все элементы указанной коллекции в этот список, начиная с указанной позиции.
      boolean addAll​(Collection<? extends E> c)
      Добавляет все элементы указанной коллекции в конец этого списка в порядке, который возвращает Iterator этой коллекции.
      void clear()
      Удаляет все элементы из этого списка.
      Object clone()
      Возвращает поверхностную копию этогоArrayListэкземпляра.
      boolean contains​(Object o)
      Возвращает true, если этот список содержит указанныйtrue 。
      void ensureCapacity​(int minCapacity)
      При необходимости увеличивает ёмкость этогоArrayListэкземпляра, чтобы он вмещал минимум элементов, указанный параметром minimum capacity.
      void forEach​(Consumer<? super E> action)
      Выполняет заданное действие дляIterableкаждого элемента, пока не обработает Iterableвсе элементы или пока действие не выбросит исключение.
      E get​(int index)
      Возвращает элемент этого списка в указанной позиции.
      int indexOf​(Object o)
      Возвращает индекс первого вхождения указанного элемента в этом списке, или -1, если список не содержит этот элемент.
      boolean isEmpty()
      Возвращает true, если этот список не содержитtrue 。
      Iterator<E> iterator()
      Возвращает итератор элементов этого списка в правильном порядке.
      int lastIndexOf​(Object o)
      Возвращает индекс последнего вхождения указанного элемента в этом списке, или -1, если список не содержит этот элемент.
      ListIterator<E> listIterator()
      Возвращает итератор списка элементов этого списка в правильном порядке.
      ListIterator<E> listIterator​(int index)
      Возвращает итератор списка элементов этого списка в правильном порядке, начиная с указанной позиции.
      E remove​(int index)
      Удаляет элемент этого списка в указанной позиции.
      boolean remove​(Object o)
      Удаляет первое вхождение указанного элемента из этого списка, если оно есть.
      boolean removeAll​(Collection<?> c)
      Удаляет из этого списка все элементы, которые содержатся в указанной коллекции.
      boolean removeIf​(Predicate<? super E> filter)
      Удаляет все элементы этой коллекции, которые удовлетворяют заданному предикату.
      protected void removeRange​(int fromIndex, int toIndex)
      Удаляет из этого списка все элементы с индексами отfromIndex (включительно) до toIndex (не включая).
      boolean retainAll​(Collection<?> c)
      Оставляет в этом списке только элементы, которые содержатся в указанной коллекции.
      E set​(int index, E element)
      Заменяет элемент этого списка в указанной позиции на указанный элемент.
      int size()
      Возвращает количество элементов в этом списке.
      Spliterator<E> spliterator()
      Создаёт late-binding и fail-fastSpliteratorдля элементов этого списка.
      List<E> subList​(int fromIndex, int toIndex)
      Возвращает указанныйfromIndex (включительно)и toIndex (не включительно)представление этой части списка.
      Object[] toArray()
      Возвращает массив, содержащий все элементы этого списка, в правильном порядке(от первого элемента до последнего).
      <T> T[] toArray​(T[] a)
      Возвращает массив, содержащий все элементы этого списка, в правильном порядке(от первого элемента до последнего); тип возвращаемого массива во время выполнения совпадает с типом указанного массива.
      void trimToSize()
      Регулирует ёмкость этогоArrayListэкземпляра до текущего размера списка.
    • 构造方法详细信息

      • 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()
        Возвращает количество элементов в этом списке.
        Specified by:
        size ,界面 Collection<E>
        Specified by:
        size ,界面 List<E>
        Результат Количество элементов в этом списке
      • 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тогда и только тогда, когда этот список содержит хотя бы один элементe Objects.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, если такого индекса нет.
        Specified by:
        indexOf在界面 List<E>
        Переопределяет:
        indexOf在课程 AbstractList<E>
        Параметры
        o- элемент для поиска Результат Индекс первого вхождения указанного элемента в этот список, или -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экземпляра. (Сами элементы не копируются.)
        Переопределяет:
        clone在课程 Object
        Результат: клон этого
        ArrayListэкземпляра. См. также:
        Cloneable
      • 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:
        add in интерфейсе 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()
        listIterator

        Возвращает итератор списка элементов этого списка в правильном порядке. Возвращаемый итератор списка является fail-fast .
        listIterator ,界面 List<E>
        В интерфейсе
        listIterator在课程 AbstractList<E>
        В классе Результат итератор списка элементов этого списка в правильном порядке См. также:
        listIterator(int)
      • iterator

        public Iterator<E> iterator()
        Возвращает итератор элементов этого списка в правильном порядке. Возвращаемый итератор является fail-fast.

        Specified by:
        iterator在界面 Collection<E>
        Specified by:
        iterator在界面 Iterable<E>
        Specified by:
        iterator在界面 List<E>
        Переопределяет:
        iterator在课程 AbstractList<E>
        Результат: итератор по элементам этого списка в правильном порядке
      • 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