菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
241
0

4.22JavaArrayList的底层实现

原创
05/13 14:22
阅读数 35848

4.22JavaArrayList的底层实现

ArrayList的底层实现原理

ArrayList底层是用数组实现的存储

特点:

  • 查询效率高、增删效率低

  • 线程不安全

一般情况下仍然使用ArrayList,因为多数情况不涉及频繁的修改

频繁修改操作:---LinkList

线程安全:---vector

ArrayList源码---为什么ArrayList可以存放任意数量的对象且长度不限?

采用数组扩容的方式实现

先定义一个长度的数组,当超过长度是再去定义一个长度更长的数组,JDK的底层源码是通过算法原长度 + (原长度/2))去定义新的数组的长度

老的数组的内容拷贝到新的数组中

新的内容继续放入新的数组后面

ArrayList源码解读

ArrayList Remove源码

将原数组的后一位索引值拷贝到所要移除的元素的索引位置---所以说如果数组长度很长要用ArrayList改的话就会拷贝索要修改的索引后面所有的元素往前移,费资源且耗时

源码解读:

 

发表评论

0/200
241 点赞
0 评论
收藏