Java ArrayList
Java ArrayList的构造方法和方法
Constructor Summary
Constructors Constructor Description 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 Type Method Description void
add(int index,E element)
Inserts the specified element at the specified position in this list.
boolean
add(E e)
Appends the specified element to the end of this list.
boolean
addAll(int index,Collection<? extendsE> c)
Inserts all of the elements in the specified collection into this list, starting at the specified position.
boolean
addAll(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.
void
clear()
Removes all of the elements from this list.
Object
clone()
Returns a shallow copy of this
ArrayList
instance.boolean
contains(Object o)
Returns
true
if this list contains the specified element.void
ensureCapacity(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.void
forEach(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.E
get(int index)
Returns the element at the specified position in this list.
int
indexOf(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.
boolean
isEmpty()
Returns
true
if this list contains no elements.Iterator<E>
iterator()
Returns an iterator over the elements in this list in proper sequence.
int
lastIndexOf(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.
E
remove(int index)
Removes the element at the specified position in this list.
boolean
remove(Object o)
Removes the first occurrence of the specified element from this list, if it is present.
boolean
removeAll(Collection<?> c)
Removes from this list all of its elements that are contained in the specified collection.
boolean
removeIf(Predicate<? super E> filter)
Removes all of the elements of this collection that satisfy the given predicate.
protected void
removeRange(int fromIndex, int toIndex)
Removes from this list all of the elements whose index is between
fromIndex
, inclusive, andtoIndex
, exclusive.boolean
retainAll(Collection<?> c)
Retains only the elements in this list that are contained in the specified collection.
E
set(int index,E element)
Replaces the element at the specified position in this list with the specified element.
int
size()
Returns the number of elements in this list.
Spliterator<E>
spliterator()
Creates a late-binding and fail-fast
Spliterator
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, andtoIndex
, 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.
void
trimToSize()
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大于或等于数组容量,则需要进行扩容。(
如果实际存储数组是空数组,则最小需要容量就是默认容量)