ArrayList集合的特点为什么是增删慢、查询快?

一、前言:

我们都知道ArrayList集合底层是数组结构,因为数组中每个元素是有索引存在,所以查询效率高,增删效率低。那为什么数组结构有索引查询效率就会高呢?而且ArrayList集合长度是可变的,数组一旦创建长度就不可变,那ArrayList集合底层是数组结构,它的底层原理又是如何执行的?

下面我们就带着这两个问题,通过分析ArrayList源码,了解其中的原理。

二、ArrayList集合增删慢:1、我们先来看一下ArrayList的底层源码
ArrayList集合的特点为什么是增删慢、查询快?
2、自动扩容原理

(1)ArrayList集合底层是数组结构,新增元素时先创建长度为0的Object数组。

(2)添加元素时,判断如果原数组中没有元素,则再创建长度为10的新数组。

(3)添加元素时,判断如果原数组中元素存满时,则再创建长度为原数组长度*1.5倍的新数组。即oldCapacity + (oldCapacity >> 1);最后再将老数组元素拷贝到新数组中。

3、结论

ArrayList在添加元素时有可能会导致集合自动扩容,ArrayList底层是数组结构,但数组长度是不可变的不支持动态扩容,此时ArrayList集合底层会创建出一个新的数组,长度为老数组的1.5倍,并将老数组的元素复制到新数组中。

ArrayList在删除元素时底层是将删除索引位置起到最后索引位置结束中所有的元素,一一向前复制一个索引位置,再将最后索引位置元素设置为null。

所以ArrayList在进行增删操作时,效率会很慢。

三、ArrayList集合查询快:1、我们先来看一下ArrayList的底层源码
ArrayList集合的特点为什么是增删慢、查询快?
2、结论

ArrayList在查询元素时底层是通过访问数组元素方式进行查询。

而数组只能存储同一类型的元素。并且声明一个数组时,会在内存中申请一块连续相邻的内存空间。当要通过索引访问数组元素时,可通过数组地址值和偏移量,直接计算出要查找元素的内存地址,所以数组支持通过索引直接访问元素,效率非常高。

举例分析:

ArrayList集合的特点为什么是增删慢、查询快?
四、总结:

通过上述分析,我们发现ArrayList集合底层是Object[]数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:ArrayList集合的特点为什么是增删慢、查询快? https://www.dachanpin.com/a/cyfx/11380.html

(0)
Spring Security在前后端分离项目中的使用
上一篇 2023-05-12 03:13:14
如何使用idea创建纯净版web工程?
下一篇 2023-05-12 03:14:16

相关推荐

  • 黄南州创业孵化基地建设项目公开招标公告

    版权声明: 本网发布内容凡注明来源为政府采购信息网/政府采购信息报的,表明“政府采购信息网/政府采购信息报”拥有其版权或已获得授权,内容形式包括但不限于文字、图片、音频、视频等。如需转载请注明来源于政府采购信息网/政府采购信息报,标注作者,并保持文章的完整性。否则,将追究法律责任。 其他来源稿件,本网已标明出处及作者,转载仅为信息分享,如涉及版权等问题,请相…

    创业分享 2023-05-13
    145
  • 如何更好创新创业?看欧美同学会第八届年会海归学长分享经验

    准备开始创新创业要具备什么条件?深圳市绚图新材科技有限公司董事长林海晖认为,做好创新创业,要有能够解决市场痛点的、差异化的核心技术,要有自己的核心产品,也要有针对体量市场的保底产品和针对新兴市场的未来产品,要保持对新兴市场的技术引导。“创业前,要思考自身核心能力是否与潜在市场需求有重大交织,理清从概念到市场的每个环节,以及是否具备团队领头人的能力,还要综合考…

    创业分享 2023-05-12
    97
  • 债务缠身、裁员过半,乐视手机是如何深陷泥潭的?

      对于去年的危机,江林颇为意外。在危机爆发之前,他丝毫没有觉察出手机的资金链已经这么紧张了。江林表示,在立项和物料购买上都没有听说过关于资金紧张的消息;并且“招人也不眨眼睛,而且后面招的人也比我们工资高很多”。   与此同时,乐视手机业务正在进行裁员。一名乐视内部人士向界面新闻记者透露,手机业务的裁员将超过50%。   另外,除去这些后期可以盈利的项目,红…

    创业分享 2023-05-23
    139
  • 陕西农民工返乡创业人数累计达48.1万人

      新华社西安11月9日电(记者 雷肖霄)记者9日从陕西省人力资源和社会保障厅了解到,截至目前,陕西省农民工返乡创业人数累计达48.1万人,返乡人员创办企业或经济实体25.84万个,累计投资金额414.4亿元,安置当地农村劳动力转移就业147.48万人。   近年来,陕西省以创业带动就业促进实现充分就业、提高就业质量。通过设立创业孵化项目补贴、加强市场化创业…

    创业分享 2023-05-13
    149
  • 永修县创业担保贷款全力扶持返乡农民工就业创业

    1、本网所载的文/图等稿件均出于为公众传播有益资讯信息之目的,并不意味着赞同其观点或证实其内容的真实性,我们不对其科学性、严肃性等作任何形式的保证 。如其他媒体、网络或个人从本网下载使用须自负版权等法律责任。 2、本网站内凡注明“来源:中国江西网九江讯”的所有文字、图片和音视频稿件均属本网站原创内容,版权均属“中国江西网”、“中国江西网九江频道”所有,任何媒…

    创业分享 2023-05-26
    123

发表回复

登录后才能评论

联系我们

在线咨询: QQ交谈

邮件:362039258@qq.com

工作时间:周一至周五,9:30-16:30,节假日休息