ArrayList 源码分析 -- java 1.8

Java8 ArrayList原理

概述

在官方文档中是这样描述ArrayList的:

Resizable-array implementation of the List interface.  Implements all optional list operations, and permits all elements, including null.In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is used internally to store the list. it is unsynchronized.

实现List接口,是一个可变长度数组,允许数据为null,非同步、线程不安全的。

 

类图结构

ArrayList 源码分析 -- java 1.8_第1张图片

如上图所示,ArrayList继承、实现的接口如下:

RandomAccess:标记这个实现接口的类(ArrayList)具有快速随机访问的功能

AbstractList:

List:
Cloneable:实现了该接口的类可以显示的调用Object.clone()方法,合法的对该类实例进行字段复制,如果没有实现Cloneable接口的实例上调用Obejct.clone()方法,会抛出CloneNotSupportException异常。正常情况下,实现了Cloneable接口的类会以公共方法重写Object.clone()
Serializable:实现了该接口标示了类可以被序列化和反序列化,具体的可查看(https://www.jianshu.com/p/0ca21d2acd7c)。

 

关注点

ArrayList 源码分析 -- java 1.8_第2张图片

https://www.jianshu.com/p/a50d8699c816?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin

 

https://blog.csdn.net/cb_lcl/article/details/81204114

 

https://mp.weixin.qq.com/s/tq-g0UmE6M-4ElOp4u_vgQ

 

在1.8 arraylist这个类中,扩容调用的是grow()方法,通过grow()方法中调用的Arrays.copyof()方法进行对原数组的复制,在通过调用System.arraycopy()方法进行复制,达到扩容的目的。

你可能感兴趣的:(Java,源码解读)