一、ArrayList介绍
ArrayList是Java集合框架中的一个重要的类,它继承于AbstractList,实现了List接口,是一个长度可变的集合,提供了增删改查的功能。集合中允许null的存在。ArrayList类还是实现了RandomAccess接口,可以对元素进行快速访问。实现了Serializable接口,说明ArrayList可以被序列化,还有Cloneable接口,可以被复制。
和Vector不同的是,ArrayList不是线程安全的。
二、 底层数据结构
数组
三、ArrayList特点
· 重复性:数据可以重复
· null值:可以有null值存在
· 有序性:能保证插入的数据有序
四、ArrayList的方法使用和源码解析
①构造方法
//1-----------------------
public ArrayList() {
this(10);
//调用ArrayList(10) 默认初始化一个大小为10的object数组。
}
//2-------------------------
public ArrayList(int initialCapacity) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
//如果用户初始化大小小于0抛异常,否则新建一个用户初始值大小的object数组。
this.elementData = new Object[initialCapacity];
}
//3--------------------------
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// 当c.toArray返回的不是object类型的数组时,进行下面转化。
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
②lastIndexOf(Object o)方法
功能:查找某个元素在ArrayList中最后出现的位置。
public int lastIndexOf(Object o) {
if (o == null) {
//如果o为null从后往前找到第一个为null的下标
for (int i = size-1; i >= 0; i--)
if (elementData[i]==null)
return i;
} else {
//从后往前找到第一个值为o的下标
for (int i = size-1; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
文章持续更新:欢迎各位小伙伴关注我的公众号:菜丸的程序屋。希望将我的不足之处给予指点,谢谢大家。喜欢Java,热衷学习的小伙伴可以加我微信: CaiWan_Y