Java 集合List攻略1:ArrayList

前言废话:
一般面试官会让你比较几种集合之间的优劣点,其实面试官想问的是不同集合底层的数据结构,数据结构决定了集合的性能优劣

ArrayList

1 数据结构
ArrayList 底层的数据结构是对象数组
图解不解释:
在这里插入图片描述

不要看太多,源码这种东西,不是要你全看懂,我们只需要了解我们想要的东西,物尽其用就好,啥都懂浪费时间,又不是要搞革命对不对

就看这三个
第一个是默认数组长度
第二个是实际存储数组
第三个数组存储的元素个数

蚂蚁小贴士:其实所有的集合底层都尼玛是基于数组实现的,唯一的差别在于数组的成员类型

2 Add方法
关于add方法其实要看的东西就只有一句话,但是为了你看的舒服点给你看个流程图,里面的各种比较你不懂也没事,只要看到最后一句话就OK

老规矩先抠图
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

流程的演示,从一开始的创建对象,构造方法其实没啥内容,就是两个数组绑定在一块儿了,你想问我为啥,一巴掌呼死你,要琢磨自己慢慢研究去。
然后从add方法开始到最后一张图,最关键的就是最后一句话:
蚂蚁稍微讲解下,其实这么一套流程主要就是做的对数组的长度判断,因为数组是固定长度的么,一开始创建长度是10,后面如果超过10,那么就需要进行扩容,所以add元素的时候经常要判断是否要扩容
扩容的方案是默认直接扩充1.5倍,如果不行那么就扩充到你需要的地步,这个稍微了解下,主要需要记住的就是他娘的每次add都要检测是否要扩容,因为扩容所以ArrayList 添加效率比较差,这是其诟病的地方。

3 remove方法

上图

在这里插入图片描述
看看红圈圈,删除的时候还是要数组复制,整体移动,所以咯其效率也比较差,移除的最后一个元素设置为空,GC进行回收。

4 查询
没啥好说的,他娘的数组查询贼简单,说个球

蚂蚁小结:
ArrayList 新增 删除效率比较低,因为要做数组的复制,性能消耗较大
蚂蚁说话比较糙,砍掉许多干扰的枝丫,追求本源,简化大家的学习过程

猜你喜欢

转载自blog.csdn.net/qq_30228707/article/details/83383531