前言:
之前写了关于Mybatis、Spring、Tomcat的源码解析,现在准备开始写一下JDK的源码解析系列文章。
网络上已经有很多大神级的JDK类解析文章,相比而言,无论是深度还是文笔都让笔者自惭形秽。
但是为了让自己对JDK源码的印象更加深刻,所以还是准备献丑了。
从自己的角度来描述一下对JDK相关类的理解,欢迎指正
从网络上截一个图(如有侵权,请联系作者),简单表示下数组结构
网格下面的0、1、2...表示index,也就是索引
网格中的数据表示当前索引的值
1.ArrayList结构、参数分析
public class ArrayList extends AbstractList
implements List, RandomAccess, Cloneable, java.io.Serializable
{
// 默认大小,为10
private static final int DEFAULT_CAPACITY = 10;
// 数据放置在elementData,这个数组中
transient Object[] elementData; // non-private to simplify nested class access
// 数组大小
private int size;
可以看出,ArrayList默认使用数组来存放数据
2.构造方法
// 空参构造
public ArrayList() {
// private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
// 给定初始容量
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
// 给定初始集合
public ArrayList(Collection c) {
...
}
// 4.删除某个区间的元素
protected void removeRange(int fromIndex, int toIndex) {
...
}
// 5.按照条件删除
@Override
public boolean removeIf(Predicate
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?