Java ArrayList

Java ArrayList的构造方法和方法

  • Constructor Summary

    Constructors
    ConstructorDescription
    ArrayList()

    Constructs an empty list with an initial capacity of ten.

    ArrayList​(int initialCapacity)

    Constructs an empty list with the specified initial capacity.

    ArrayList​(Collection<? extendsE> c)

    Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.

  • Method Summary

    Concrete Methods
    Modifier and TypeMethodDescription
    voidadd​(int index,E element)

    Inserts the specified element at the specified position in this list.

    booleanadd​(E e)

    Appends the specified element to the end of this list.

    booleanaddAll​(int index,Collection<? extendsE> c)

    Inserts all of the elements in the specified collection into this list, starting at the specified position.

    booleanaddAll​(Collection<? extends E> c)

    Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's Iterator.

    voidclear()

    Removes all of the elements from this list.

    Objectclone()

    Returns a shallow copy of this ArrayList instance.

    booleancontains​(Object o)

    Returns true if this list contains the specified element.

    voidensureCapacity​(int minCapacity)

    Increases the capacity of this ArrayList instance, if necessary, to ensure that it can hold at least the number of elements specified by the minimum capacity argument.

    voidforEach​(Consumer<? super E> action)

    Performs the given action for each element of the Iterable until all elements have been processed or the action throws an exception.

    Eget​(int index)

    Returns the element at the specified position in this list.

    intindexOf​(Object o)

    Returns the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element.

    booleanisEmpty()

    Returns true if this list contains no elements.

    Iterator<E>iterator()

    Returns an iterator over the elements in this list in proper sequence.

    intlastIndexOf​(Object o)

    Returns the index of the last occurrence of the specified element in this list, or -1 if this list does not contain the element.

    ListIterator<E>listIterator()

    Returns a list iterator over the elements in this list (in proper sequence).

    ListIterator<E>listIterator​(int index)

    Returns a list iterator over the elements in this list (in proper sequence), starting at the specified position in the list.

    Eremove​(int index)

    Removes the element at the specified position in this list.

    booleanremove​(Object o)

    Removes the first occurrence of the specified element from this list, if it is present.

    booleanremoveAll​(Collection<?> c)

    Removes from this list all of its elements that are contained in the specified collection.

    booleanremoveIf​(Predicate<? super E> filter)

    Removes all of the elements of this collection that satisfy the given predicate.

    protected voidremoveRange​(int fromIndex, int toIndex)

    Removes from this list all of the elements whose index is between fromIndex, inclusive, and toIndex, exclusive.

    booleanretainAll​(Collection<?> c)

    Retains only the elements in this list that are contained in the specified collection.

    Eset​(int index,E element)

    Replaces the element at the specified position in this list with the specified element.

    intsize()

    Returns the number of elements in this list.

    Spliterator<E>spliterator()

    Creates a late-binding and fail-fastSpliterator over the elements in this list.

    List<E>subList​(int fromIndex, int toIndex)

    Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive.

    Object[]toArray()

    Returns an array containing all of the elements in this list in proper sequence (from first to last element).

    <T> T[]toArray​(T[] a)

    Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array.

    voidtrimToSize()

    Trims the capacity of this ArrayList instance to be the list's current size.

解析ArrayList的构造函数

// 默认构造函数,默认容量大小为10
ArrayList()

// capacity是ArrayList的默认容量大小。每次扩容为原来的1.5倍。
ArrayList(int capacity)

// 创建一个包含collection的ArrayList,可以将别的ArrayList数组复制进去
ArrayList(Collection<? extends E> collection)

ArrayList适合查询与修改,格局位置索引index查询和修改只需要花费常数时间

get(int index)

set(int index, E element)

但是对ArrayList的插入,删除是非常耗时的,除非是在数组末端

add(int index,E element)

remove​(int index)//删除索引位置的元素

remove(Obiect o)//寻找等于 o 的元素,其实就是每个元素都比较一下,所以如果是自定义类就必需重写equals方法

所以我们知道了ArrayList不适合频繁插入删除的场景,适合根据索引频繁查询修改的场景

ArrayList转数组

toArray()//默认返回一个Object数组(注意!不可以(String[])toArray(),你只能对一个个元素转型不能对一个数组整体转型,所以建议使用第二种方法 )

toArray(T[] a)//自己设置数组类型比如toArray(new String[list.size()])就是返回一个数组大小=list长度元素类型为String的数组

ArrayList扩容

随着元素不断增加,原来空间不够用的时候

ensureCapacityInternal(int minCapacity)//根据传入的最小需要容量minCapacity来和数组的容量长度对比,若minCapactity大于或等于数组容量,则需要进行扩容。(如果实际存储数组是空数组,则最小需要容量就是默认容量)