ArrayList集合的底层原理

一、认识ArrayList集合。

  1. ArrayList集合属于Collection集合的体系,我们先来认识一下Collection集合的体系。 
  2. Collection集合是List集合、Set集合的父类。根据下图所示,我们可以清楚的知道这三个集合都是接口。
  3. List集合下面有ArrayList集合、LinekdList集合两个子类,而Set集合下面也有HashSet集合、TreeSet集合两个子类,并且HashSet集合下面还有一个LinekdHashSet集合的子类。这些子类都是属于实现类,最终都是通过继承Collection集合。如下图所示:
  4. Collection集合是一种单列集合,每个元素(数据)只包含一个值。现在来看一下Collection集合的特点。

二、ArrayList集合的底层原理。

  1. ArrayList集合是基于数组实现的。数组的特点是查询快、增删慢。
  2. 现在看一下ArrayList集合底层实现的过程。

        ①利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组。

·        如下图所示,通过Debug模式调试可以发现。刚开始创建集合时,集合里面是什么都没有

         的。

        ②添加第一个元素时,底层会创建一个新的长度为10的数组。

·        当开始添加第一个元素时,长度发生了变化,并且在底层会创建一个长度为10的数组。

        存满时,会扩容1.5倍。

·        仔细观察下面两幅图,图一是刚存满10个元素,数组长度还没开始发生变化。当开始存进第

         11个元素,数组自动扩容1.5倍,也就是10 x 1.5 = 15 ,数组长度就变成了15。

                                                                         图一 

                                                                          图二

        ④如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准。

·        如图一所示,当我在它已经满了,一次性存储10个元素,它将不会按照1.5倍来自动扩容,而

        是按照实际长度来扩容。

                                                                          图一 

 

                                                                           图二

以上的内容就是ArrayList集合的底层原理,也是我对ArrayList集合的一点理解,若有更好的理解,可评论区告诉我,或者私信我,让我接着学习学习。感觉对自己有帮助可点个赞,收藏起来慢慢学习,后续会慢慢的分享我对一些知识的理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值