没有合适的资源?快使用搜索试试~ 我知道了~
ArrayList 深入理解底层
0 下载量 148 浏览量
2020-12-21
15:23:18
上传
评论
收藏 85KB PDF 举报
温馨提示
试读
4页
ArrayList 集合源码解读介绍构造方法add方法remove方法总结 介绍 ArrayList Jdk1.8采用的是数组的数据结构,是非线程安全的一个集合 (多线程下数据不安全),本文章主要讲解ArrayList集合添加和集合扩容,其他方法都相对简单,读懂这个后相信你翻翻源码即可读懂其他方法原理,下面讲解源码的可能会有点枯燥,请着重去了解集合添加和扩容的一个流程 构造方法 我们来看源码迅速带过这三个构造方法,为了方便阅读,以下我们将当前集合数组统称为集合 无参构造方法,创建一个空集合 //存放数据的Object数组 transient Object[] elementData;
资源详情
资源评论
资源推荐
ArrayList 深入理解底层源码深入理解底层源码
ArrayList 集合源码解读集合源码解读介绍构造方法add方法remove方法总结
介绍介绍
ArrayList Jdk1.8采用的是数组的数据结构,是非线程安全的一个集合 (多线程下数据不安全),本文章主要讲解ArrayList集集
合添加合添加和集合扩容集合扩容,其他方法都相对简单,读懂这个后相信你翻翻源码即可读懂其他方法原理,下面讲解源码的可能会有点枯
燥,请着重去了解集合添加和扩容的一个流程
构造方法构造方法
我们来看源码迅速带过这三个构造方法,为了方便阅读,以下我们将当前集合数组统称为集合
无参构造方法,创建一个空集合
//存放数据的Object数组
transient Object[] elementData; // non-private to simplify nested class access
//默认为空数组
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
public ArrayList() {
//将空数组赋值给当前集合
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
指定初始化大小构造方法
private static final Object[] EMPTY_ELEMENTDATA = {};
public ArrayList(int initialCapacity) {
//如果指定数组大小大于0执行
if (initialCapacity > 0) {
//new 一个对象数组赋值给当前ArrayList集合
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
//等于零一样赋值为空集合
this.elementData = EMPTY_ELEMENTDATA;
} else {
//非法参数抛出异常
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
集合参数的构造方法,作用是将集合参数转换为当前ArrayList集合的值
public ArrayList(Collection c) {
//将Collection接口集合转换成数组 赋值给当前ArrayList集合
elementData = c.toArray();
//如果当前集合(Collection接口集合)中参数不为空
if ((size = elementData.length) != 0) {
//如果集合数组类型不是Object类型 比如int[] 则执行
if (elementData.getClass() != Object[].class)
//将当前集合转换成Object类型的数组返回给当前集合
//这里直接完成了集合大小的初始化
elementData = Arrays.copyOf(elementData, size, Object[].class);
} else {
// 当前集合大小为空则赋值空数组
this.elementData = EMPTY_ELEMENTDATA;
}
weixin_38642285
- 粉丝: 5
- 资源: 948
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0