ArrayList源码

ArrayList是可以动态增长和缩减的索引序列,它是基于数组实现的List类。

 

类里面的属性:

public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
private static final long serialVersionUID = 8683452581122892189L;
//默认大小
private static final int DEFAULT_CAPACITY = 10;
//空对象数组
private static final Object[] EMPTY_ELEMENTDATA = {};
默认空对象数组
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
元素数组
transient Object[] elementData; // non-private to simplify nested class access
//实际元素的容量
private int size;
//int容纳的最大容量
    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
}




三种构造函数:

构造函数1:传入的数值为集合的容量

 构造函数2:无参,赋值空的对象数组

 


构造函数3:传入一个集合(这里使用了泛型)

 

 

方法:

 

   将集合容量和实际容量变为一样

 

 确认容量的方法

 

 

 



判断需不需要扩容的方法

 


扩容数组的方法:

 

 

 

容量超过最大容量,赋值最大的容量方法

 

 返回实际容量

 

判断实际容量是否为空方法

 判断是否包含某个元素的方法

 

 查找某个元素的位置方法:

 

 

 

 查找某个元素最后出现位置方法:

 

 

 克隆集合的方法:

 复制集合的方法:

 

 

 

 

 泛型复制数组的方法:

 

 

 获取某个位置的元素方法:

 

 

 获取某个位置元素的方法:

 设置某个位置元素的值:

 

 

 




在末尾田家庵元素

 指定位置添加元素


 

删除指定位置元素

 

删除指定元素

 还没研究过:

 

 清除所有元素

 

添加一个集合:



 

指定位置添加元素

 移除指定范围的下表值


 检查是否越界


 

添加是否越界:

 返回下表和容量


 

 

移除所有

 测试集合是否有交集

 

 

 判断交集

 

序列化对象

 

 

 

     异常情况:

 

 

 遍历:

 

 

 排序:

 

 

 

 参考:

https://www.cnblogs.com/zhangyinhua/p/7687377.html

 

 

 

 






posted @ 2019-06-21 00:16  远方的人111  阅读(150)  评论(0)    收藏  举报