ArrayList 源码剖析(jdk 1.8)

第一篇博客哈,比较粗糙。各位将就着康康。

ArrayList 底层实现: 数组,

在源码中我们不难看出 ArrayList 容器的初始阈值是 10

它为我们提供了三个构造器

空构造器 => 创建一个空数组对象。
传入初始长度构造器 : 入参为 n => 创建一个初始长度为n的数组对象。
传入实现了Collection接口的参数 => 创建出一个包含指定元素的对象。

且实例化出来的ArrayList对象,会按照传入对象的排序规则排序。相当于把传入的对象copy了一份,再构造出一个ArrayList。(包括排序规则等等)

在这里插入图片描述

add() 函数

他提供了两个API

一个是 add (E e)
这个API会在ArrayList数组末尾追加一个元素。
在源码中可以看出,它会先去调用 ensureCapacityInternal 这个API 。
这个API会去判断数组的长度是否够用。如果不够用会对ArrayList进行扩容操作。

下面贴出源码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二个 API add (int index, E element)
指定下标插入元素

set(int index, E element)方法

替换指定下标元素

remove(int index) 方法

在这里插入图片描述

文末,介绍下 System.arraycopy 。(来自:百度百科)

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值