LinkedList相较于Arravlist的特点/优化

news2024/11/25 2:53:10

Arravlist底层是内存空间连续的数组,可以根据下标进行随机访问,效率比较高,因为在根据下标访问某一个元素时,并不是一个一个去查,而是算出来这个下标的地址,直接根据这个地址的指向去获取的,因为数组是一个连续的内存空间,在创建时指定了类型和长度,知道每一个元素的类型也就知道每个元素长度,然后算出访问的这个元素的地址值(比如创建一个int类型数组长度10,因为int占4字节,获取第5个元素时,4x5=20,就直接通过下标找到第五个元素的地址值)

但是一旦需要增删的话,如果增加元素后长度大于现有长度,就要重新创建一个ArrayList,再把原数组里面的数据拷贝过来,再添加新元素。

LinkedList底层是内存空间不连续的链表,是游离在内存空间中的一个个节点,每个节点有头结点和尾结点的地址信息以此来依次关联,虽然增删时只需要断链再重新接链,不影响其他节点,总体效率高,但是访问时需要一个一个进行遍历来确定是不是所需要的元素。一般使用场景是对首位元素操作频繁的场景,使用到的方法有   addFirst()addLast()  / offerFirst()和  offerLast() / offer()

 getFirst() /  peek()  /  element()  /  peekFirst() 和 getLast()  /  peekLast

removeFirst()removeLast()

演示:

LinkedList虽然也有下标,但它经常做的是首尾相关的操作,所以他的专属方法有非常明显的特点:如   addFirst()addLast()  / offerFirst()和  offerLast() / offer()

 getFirst() /  peek()  /  element()  /  peekFirst() 和 getLast()  /  peekLast

removeFirst()removeLast()   pollFirst()  和  pollLast()   /   poll()

查询

注意点:Arravlist 和 LinkedList 都是List的实现类,所以其元素都是有下标的,都可以根据元素下标访问及各种操作,只不过LinkedList 常用的是首尾操作而已

性能优化:

一般来说,在数据量非常大的情况下:

Arravlist       增删效率慢,查询操作比较快,

LinkedList    增删效率高,查询操作比较慢,

但是如果可以熟练使用ArrayList,效率并不会比在创LinkedList低,这里可以从两个方面进行优化:

1、在数据长度不是特别大并且长度基本能控制的情况下,创建ArrayList时就可以预估好需要的长度,使用那个可以定义初始长度的构造方法,创建ArrayList,并且长度不能太大,不然创建时多长就会占用多大的内存,这样后期可以尽可大能的避免频繁的扩容。

2,在添加元素的时候使用尾插法而不是插入到数组中间。
如果这样合理的使用ArrayList,甚至可以让ArravList的增删效率超过LinkedList,因为LinkedList每次创建或删除链表都会对应的新建或销毁链表对象,大量的数据增删相对于正确使用的ArrayList还是比较消耗内存,浪费时间的

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

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

相关文章

中国人民大学与加拿大女王大学金融硕士——在职读研,我们一起微笑前行

人生总有不期而遇的温暖,也有生生不息的希望。想要更好的生活,就先让生活看到最好的你。对于已经萌发在职读研的你,是否找到合适的院校呢?中国人民大学与加拿大女王大学金融硕士项目符合你的预期吗? 中国人民大学与加拿…

C++11的半同步半异步线程池

C11的半同步半异步线程池 简介同步队列Take函数Add函数Stop函数SyncQueue完整代码 线程池主函数测试 简介 半同步半异步线程池用的比较多,实现也比较简单。 其中同步层包括同步服务层和排队层,指的是将接收的任务排队,将所有的任务排队到一…

【数据分享】我国七普的乡镇(街道)人口数据(免费获取)

人口数据是我们在各项研究中都经常使用的数据!人口数据的主要来源是人口普查,全国性的人口普查每十年进行一次。最近一次的人口普查是第七次全国人口普查,简称七普。七普统计的是2020年的人口数据。 之前我们分享过省市县三个层级的七普的人…

在业务和IT的视角中,MES管理系统有哪些重要性

在当今制造业中,MES生产管理系统已成为生产管理层面不可或缺的一部分。MES作为一款集成的软件解决方案,旨在连接企业的各个生产环节,实现生产计划、调度、执行和跟踪。本文将从业务和IT视角出发,探讨MES管理系统的重要性和实施细节…

PMP对项目管理工作有什么用?

首先,项目管理岗位基本是不限行业的,所以,只要是项目管理相关的岗位,pmp证书都是能起到效果的,不用担心局限性太大,而且,pmp证书是国际证书,无论国企还是外企,都是认可这…

go net/http 源码解读

回顾 1. HTTP Server 在 go 中启动一个 http server 只需短短几行代码 func PingHandler(w http.ResponseWriter, r *http.Request) {io.WriteString(w, "pong!") }func main() {http.HandleFunc("/ping", PingHandler)log.Fatal(http.ListenAndServe(&…

RocketMQ 源码分析——Producer

文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…

Linux环境中数据误删除后恢复指导

一、背景 在很多Linux系统运维工作中,很多人会遇到敲错命令,或复制命令出错,或直接执行了rm -rf命令,事后才恍然大悟,闯下大祸,抛开问题,如果真的遇到这种情况,我们该如何应对呢&…

如何使用IP归属地查询API来追踪网络活动

引言 在当今数字化世界中,了解网络活动的源头和位置对于网络安全、市场研究和用户体验至关重要。IP归属地查询API是一种强大的工具,可以帮助您追踪网络活动并获取有关IP地址的重要信息。本文将探讨如何使用IP归属地查询API来追踪网络活动,以…

[C++ 网络协议] 多播与广播

目录 1. 多播 1.1 多播的使用情形 1.2 多播的原理 1.3 如何实现多播 1.4 多播的代码实现 2. 广播 2.1 广播与多播的区别 2.2 广播的分类 2.3 实现广播 1. 多播 1.1 多播的使用情形 考虑一种情形,你要向10000名用户发送数据,此时如果用TCP提供服…

MDPI模板报错的问题---提示缺少sty文件

MDPI模板报错的问题—提示缺少sty文件 平时大多数提交IEEE trans模板时大多使用CTEX编译,然而,MDPI模板需要用texlive,二者之间如果先安装CTEX后安装texlive将会导致库文件的冲突。结果将会报缺少sty的文件错。网上提供了很多解决方案&#…

Nmap安装和使用详解

Nmap安装和使用详解 Nmap概述功能概述运行方式 Nmap安装官方文档参考:Nmap参数详解目标说明主机发现端口扫描Nmap将目标主机端口分成6种状态:Nmap产生结果是基于机器的响应报文,而这些主机可能是不可信任的,会产生一些迷惑或者误导…

如何将 ONLYOFFICE 协作空间与单页面应用集成

2023 年春季,我们推出了 ONLYOFFICE 协作空间,这是一个先进的联合办公平台,旨在加强与客户、合作伙伴和第三方的文档协作。使用可自定义的房间和高级安全功能可以彻底改变您的文档协作方式。在本博文中,我们将以 GitHub Pages 为例…

Linux之操作文件命令

目录 一、阅览文件 1、cat 2、head 3、tail 4、more 5、less 二、过滤命令——grep 1、格式 2、选项 3、匹配模式 三、cut切割命令 1、格式 2、选项 四、sort排序命令 1、格式 2、选项 五、uniq去重命令 六、替换文件中的字符显示tr 1、格式 2、选项 七、…

第8章 MySQL的数据目录

8.1 数据库和文件系统的关系 像 InnoDB 、 MyISAM 这样的存储引擎都是把表存储在磁盘上的,而操作系统用来管理磁盘的又被称为 文件系统 ,所以用专业一点的话来表述就是:像 InnoDB 、 MyISAM 这样的存储引擎都是把表存储在文件系统上的。当我…

API接口采集电商平台阿里巴巴中国站获得1688商品评论数据货品评分、评价内容接口调用指南

淘宝API商品评论接口,主要用于获取某个商品的评价信息。通过该接口,我们可以获取到商品的所有评价内容、评价时间、评价等级等相关信息,帮助我们更好地了解用户对商品的反馈,进而进行数据分析和业务优化。 1688.item_review-获得…

投票制作创建流量主小程序开发

很多企业、团队、门店商家有创建投票活动的需求,单独开发一套成本过高,所以会找一些市面上可以创建投票活动的工具。基于此开发了一款可以创建制作投票活动的小程序。 小程序主要是投票活动的制作、创建,可以接入流量主广告和会员功能&#…

成集云 | 金蝶K3集成聚水潭ERP(金蝶K3主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶K3是一款ERP软件,它集成了供应链管理、财务管理、人力资源管理、客户关系管理、办公自动化、商业分析、移动商务、集成接口及行业插件等业务管理组件。以成本管理为目标,计划与流程控制为主线,通过对成本…

温度传感器的精度受什么影响

温度传感器(temperature transducer)是指能感受温度并转换成可用输出信号的传感器。是早开发,应用极其广的一类传感器,是温度测量仪表的核心部分。现代的温度传感器外形非常得小,这样更加让它广泛应用在生产实践的各个…

PowerDesigner 与 mysql 同步数据

PowerDesigner 连接上数据库 创建数据库表 table_5 选择: 点击确认后弹出 点击run执行 刷新数据库表,已创建成功 修改测试表1,新增一个字段 取消全选 选择数据库,勾选修改的表,如果全部勾选的话,就…