List接口中的ArrayList与LinkedList

news2024/11/15 17:57:02

ArrayList

ArrayList的继承实现关系图
在这里插入图片描述

  1. ArrayList 底层就是⼀个 Object[] 数组,当实例化ArrayList时没有指定数组容量大小,、第⼀次添加元素(调⽤ add() ⽅法)时会初始化为⼀个⻓度为 10 的数组(即默认初始化容量为 10
    在这里插入图片描述
    在这里插入图片描述
    可以创建指定大小的数组,因为ArrayList 容量使⽤完后,会“⾃动”创建容量更⼤的数组,并将原数组中所有元素拷⻉过去,这会导致效率过低,可以使⽤构造⽅法 ArrayList (int capacity) 或 ensureCapacity(int capacity) 提供⼀个初始化容量,避免刚开始就⼀直扩容,造成效率较低
    在这里插入图片描述

优点:

  • 向 ArrayList 末尾添加元素(add() ⽅法)时,效率较⾼
  • 查询效率⾼

缺点:

  • 扩容会造成效率较低(可以通过指定初始化容量,在⼀定程度上对其进⾏改࠺)
  • 另外数组⽆法存储⼤数据量(因为很ᵙ找到⼀块很⼤的连续的内存空间)
  • 向 ArrayList 中添加/删除元素(add(int index)),需要移动元素,效率较低

LinkedList

LinkedList继承实现关系图
在这里插入图片描述

LinkedList 底层是⼀个双向链表,优点是增/删效率⾼,缺点是查询效率较低。
LinkedList 也有下标,但是内存不⼀定是连续的,LinkedList 可以调⽤ get(int index) ⽅法,返回链表中第 index 个元素 但是,每次查找都要从头结点开始遍历

LinkedList.add ⽅法只能将数据追加到链表的末尾,如果要将对象追加到链表的中间位,则需要使⽤ ListIterator 接⼝的 add ⽅法在这里插入图片描述

ListIterator 中 add ⽅法在调⽤ next 之后,在迭代器左侧添加⼀个元素,调⽤ previous 之后,add 是在迭代器右侧添加元素在这里插入图片描述

总结

LinkedList与ArrayList区别:
相同点:

  1. 二者都是 List 接口的实现类,具有元素可重复,有序(存取顺序)特点;
  2. 二者都是线程不安全,效率高;

不同点:

  1. 数据结构:ArrayList底层数据结构是动态数组,LinkedList底层数据结构是双向链表;
  2. 随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
  3. 增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高, 因为 ArrayList 增删操作要影响数组内的其他数据的下标。

综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Netty源码] ByteBufAllocator内存管理器相关问题 (十一)

文章目录1.ByteBufAllocator 内存管理器2.UnpooledByteBufAllocator2.1 heap内存的分配2.2 direct内存的分配3.PooledByteBufAllocator3.1 heap内存和direct内存的分配3.2 directArena分配direct内存的流程3.3 内存规格的介绍4.缓存的相关问题4.1 缓存的数据结果4.2 命中缓存的…

一维差分思想【算法推导、深刻思考】

797. 差分 - AcWing题库 差分本质上就是前缀和的逆运算 算法推导 其实在最开始自己去完成这个题目的时候,感觉好像是可以往前缀和方向靠的,但是一下子没有想到实现方法就无疾而终了。所以最后选择的算法就只是单纯的暴力(虽然知道过不了&…

【操作系统复习】第5章 存储器管理

存储器的层次结构 存储层次 ➢ CPU寄存器 ➢ 主存:高速缓存、主存储器、磁盘缓存 ➢ 辅存:固定磁盘、可移动介质 层次越高,访问速度越快,价格也越高,存储容量也最小 寄存器和主存掉电后存储的信息不再存在&a…

2024软件工程考研之《软件工程导论》专业课复习

一、考察《软件工程导论》的学校 截止目前,考察《软件工程导论》的学校主要有: 大连理工大学887 北京航天航空大学991 北京交通大学901 河海大学846 海南大学835 新疆大学841 成都信息工程大学809 长安大学846 天津工业大学840 华东交通大学837 大连交通…

采购招投标系统-高效管控招采流程-降低采购成本

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

软考证书找工作有用吗?软考找工作用处大吗

软考证书是衡量IT技术人才能力的一种重要评价标准。 一、软考高级证书对找工作的帮助 1. 竞争力增强 软考高级证书具有一定难度和较高的专业技能要求,拥有该证书的人的技术水平和专业能力会得到认可和尊重,从而增强求职者的竞争力。 2. 拓宽职业发展…

防火墙NAT实验,双机热备实验

目录 NAT防火墙基础实验 源地址转换 服务器映射 域内双向NAT 域间双向NAT 双机热备基础实验 主备备份 负载分担 NAT防火墙基础实验 实验拓扑: 1.进入防火墙图形化页面进行配置 接口列表的配置 源地址转换 企业内部网络访问外部网络,进行源地…

如何用nodejs构造一个网站爬虫

爬虫是个什么东西 英文spider,网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些…

干货分享 | 采购没“云”和有云的区别有哪些?

多年前,提起“云”这个词,很多人还是“不知所云”。 但如今,大众对“云”的了解和认可程度也越来越高,尽情享受着“云”带来的便利。 通过“云”,可以随时随地畅听海量音乐、进行网购、访问云盘的照片和视频、在云端创…

【数据分析】——分析方法

上司要你帮忙看看公司最近的网站运营情况怎么样? 公司最近的网站运营情况?这个问题太宽泛了,你得要知道上司的明确需求 问题1:boss,你是想看看公司网站具体哪方面的问题? 回答:公司最近销售不太好,订单转…

Kubernetes 多集群网络方案系列 1 -- Submariner 介绍

Submariner 是一个完全开源的项目,可以帮助我们在不同的 Kubernetes 集群之间(无论是在本地还是云端)实现网络通信。Submariner 有以下功能: 跨集群的 L3 连接跨集群的服务发现Globalnet 支持 CIDR 重叠提供命令行工具 subctl 简…

MappedByteBuffer 详解(图解+秒懂+史上最全)

背景: 在尼恩视频版本里,从架构师视角,尼恩为大家彻底介绍 rocketmq 高可用、高并发中间件的原理与实操。 给大家底层的解读清楚 rocketmq 架构设计、源码设计、工业级高可用实操,含好多复杂度非常高、又非常核心的概念&#xff…

Python 小型项目大全 11~15

十一、标题党生成器 原文:http://inventwithpython.com/bigbookpython/project11.html 我们的网站需要欺骗人们去看广告!但是想出有创意的原创内容太难了。幸运的是,有了标题党生成器,我们可以让一台计算机产生数百万个令人发指的…

在CentOS 7.5上用离线压缩包安装Python-3.9.10的过程记录

项目的需要,需要在CentOS 7.5上去部署一个Python 3.9.10的安装环境。 值得注意的是在CentOS 7.5系统中,默认安装了 Python 2.7.x。 Python 2.7.x 是许多系统工具和应用程序所依赖的版本,因此它被包括在 CentOS 7.5 发行版中。如果在 CentOS …

太全面了,数据治理8大核心模块建设参考

数据治理是一个去中心化、多元参与的系统工程。一个全面且明确的数据治理体系,可以帮助组织构建生态式、协同化治理路径,最大化地提升整体数据质量,实现数据战略,激活新型生产力。 本文以元数据、数据标准、主数据、数据交换、数…

Mybatis-Plus批量添加或修改数据的三种方式

SpringBoot批量添加或修改数据的三种方式 方式一.Mybatis-plus 提供的 saveOrUpdateBatch 提供的方法 是遍历每一个元素,判断主键是否存在,如果存在则做更新,不存在添加 方式二.分组数据再批量添加或修改 先获取表中所有的主键 &#xff0…

6D姿态检测

3D相机—结构光相机 结构光,英文叫做 Structured light,其原理是基本原理是,通过近红外激光器,将具有一定结构特征的光线投射到被拍摄物体上,再由专门的红外摄像头进行采集。这种具备一定结构的光线,会因被…

如何在TikTok视频描述中提高用户参与度

鑫优尚电子商务:TikTok视频描述(包括话题标签)有150个字符的限制,因此卖家需要合理撰写出有趣且有实际意义的视频描述。可尝试将描述保持在140个字符以内,将最重要的信息放在前面,并通过多次修改文案以排除…

蚂蚁4.11笔试

文章目录前言一、红蓝格子填字母【蚂蚁4.11笔试第三题】解法一:二分解法解法二:模拟二、桌上弹球游戏【蚂蚁4.11笔试第二题】每日一题day82:困于环中的机器人(力扣1041)前言 1、红蓝格子填字母 2、桌上弹球游戏 3、困…

12 个好用且不花钱的网络监控工具

导读要让一个多级机构运行良好而且平稳的话,一个非常艰巨重大的任务就是做好网络管理。每个机构都配备专门的人员,即网络分析师,来进行网络管理。他们 使用了 许多工具来监视网络的运行状况,并查看网络流量的上升和下降状况。他们…