一,简介

ArrayList继承自AbstractList是我们在开发中最常用的集合之一,他的底层是一个动态数组(elementData),可以放入多个的重复值,也可以放入多个null值,是线程不安全的.
查询遍历时比较快,但是在做插入和删除时会移动前后元素的位置,所以效率比较低

二.属性

DEFAULT_CAPACITY:默认的初始容量为10;
DEFAULTCAPACITY_EMPTY_ELEMENTDATA:无参构造器默认创建的数组长度为0(就是为什么ArrayList初始容量为0了)
MAX_ARRAY_SIZE:最大容量是Integer的最大值-8(具体多少自己算一下吧)
Object[ ] elementData:这个就是存储数据的地方了
size:表示存储了多少个数据

三.构造器:

使用的比较多的默认构造器,他给elementDate赋予了一个初始容量,就是一个空的数组;(初始为0)
Java基础--ArrayList的方法--ArrayList源码
带有初始容量的构造器,如果传递过来的参数大于0name就新建一个长度为initialCapacity的Object数组,如果等于0就给他一个空的数组,否则就抛出异常
Java基础--ArrayList的方法--ArrayList源码

这个构造器可以传递一个集合,调用toArray方法转换为数组之后判断他的长度,如果为0就赋值为空数组,如果不为0就判断数据类型然后进行数组的copy

Java基础--ArrayList的方法--ArrayList源码

四.常用方法:

size():

获取存放了多少元素,直接返回size

Java基础--ArrayList的方法--ArrayList源码
isEmpty():

判断集合是否为null,如果存入元素的大小为0就返回true

Java基础--ArrayList的方法--ArrayList源码
contains(Object o):

传入一个值判断在集合中是否存在,调用indexOf方法(下一个就是)

Java基础--ArrayList的方法--ArrayList源码
indexOf(Object o):

返回传入元素在数组中的下标位置(查找到第一个就进行返回)

Java基础--ArrayList的方法--ArrayList源码
lastIndexOf();

查询锁传入对象所在的最后一个索引
size-1的操作时为了避免数组越界

Java基础--ArrayList的方法--ArrayList源码
clone();

调用的时父类的clone方法,得到一个ArrayList然后再对elementData进行拷贝然后赋值给通过clone方法得到的数组

Java基础--ArrayList的方法--ArrayList源码
toArray():

转换为一个数组

Java基础--ArrayList的方法--ArrayList源码
get();

首先调用rangeCheck方法判断传入的索引值是否大于数组内存放元素长度,如果大于就抛出异常

Java基础--ArrayList的方法--ArrayList源码
add();

添加元素,代码很少,但是调用了一个方法,涉及到很多方法的调用判断,返正就是进行长度的盘端进行扩容

Java基础--ArrayList的方法--ArrayList源码
remove()(按照索引删除,返回删除的内容);

删除这个下标的值并将其返回,并且进行内部元素的移位(首先判断是否是最后一个,使用总个数-下标-1如果是最后一个结果为0,就将最后一个下标的值赋予null值,如果不是0就进行copy移位)

Java基础--ArrayList的方法--ArrayList源码
remove(Object o)(按照内容删除,删除全部的);

跟for循环遍历数组进行值的判断,equals比较值是否相等,如果相同就调用fastRemove方法进行删除((首先判断是否是最后一个,使用总个数-下标-1如果是最后一个结果为0,就将最后一个下标的值赋予null值,如果不是0就进行copy移位)

Java基础--ArrayList的方法--ArrayList源码
clear();

清空整个集合,将size归0

Java基础--ArrayList的方法--ArrayList源码

相关文章: