LinkedList相较于Arravlist的特点/优化

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

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

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

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

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

演示:

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.xdnf.cn/news/139690.html

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

相关文章

Android Key/Trust Store研究+ssl证书密钥

前言:软件搞环境涉及到了中间件thal trustzone certificate key,翻译过来是thal信任区域证书密钥 ,不明白这是什么,学习一下 ssl证书密钥 SSL密钥是SSL加密通信中的重要组成部分。SSL证书通过加密算法生成,用于保护网…

思科路由器:NAT的基础配置

一直以来,对于华为、H3C、锐捷交换机的命令配置,不断的有朋友留言,三家交换机的配置命令容易弄混,经常在实际项目配置中出错,因此,找几个基础的示例来练练。 R1配置 Router>en Router>enable Rout…

Apifox接口测试工具详细解析

最近发现一款接口测试工具--apifox,我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式,更能说明apifox可以做什么。 Apifox Postman Swagger Mock JMeter Apifox的特点: 接口文档定义: Api…

2023华为杯D题——基于Kaya模型的碳排放达峰实证研究

一、前言 化石能源是推动现代经济增长的重要生产要素,经济生产活动与碳排放活动密切相关。充分认识经济增长与碳排放之间的关系对转变生产方式,确定碳达峰、碳中和路径极为必要。本研究在对经济增长与碳排放关系现有研究梳理的基础上,系统地分…

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 1 题目 1.1 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血,占全部脑卒中发病率的10-15%。其病因复杂,通常因脑动脉瘤破裂、脑动脉异常等因素,导致…

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售,为解决iPhone15这些机型出现的数据迁移问题,苹果紧急发布了 iOS 17.0.2 更新,内部版本号为 21A350。 需要注意的是, iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …

中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置

本文讲解中兴R5300 G4服务器BMC带外iSAC管理员zteroot密码遗失,无法登录时如何对其进行密码重置,以及iSAC启用IPV6地址的方法。 一、重置中兴R5300 G4服务器iSAC管理员zteroot密码 1、通过SSH登录到iSAC,默认用户名:sysadmin&am…

科普之加密、签名和SSL握手

一 背景知识 感悟: 不能高不成低不就备注: 以下内容没有逻辑排版,仅做记录 ① 加密方式 说明: 单向和双向认证遗留: 如何用openssl从私钥中提取公钥? ② 互联网数据安全可靠条件 说明: 二者相互印证 二 互联…

Windows专业版的Docker下载、安装与启用Kubenetes、访问Kubernetes Dashboard

到Docker 官网https://www.docker.com/ 下载windows操作系统对应的docker软件安装 Docker Desktop Installer-Win.exe 2023-09版本是4.23 下载后双击安装 重启windows后,继续安装 接受服务继续安装 解决碰到的Docker Engine stopped 打开 控制面板》程序》启用或关…

成为威胁:网络安全中的动手威胁模拟案例

不断变化的网络威胁形势要求组织为其网络安全团队配备必要的技能来检测、响应和防御恶意攻击。然而,在研究中发现并继续探索的最令人惊讶的事情是,欺骗当前的网络安全防御是多么容易。 防病毒程序建立在庞大的签名数据库之上,只需更改程序内…

jupyterlab开发环境最佳构建方式

文章目录 背景jupyterlab环境构建运行虚拟环境构建以及kernel映射验证总结 背景 从jupyter notebook切换到了jupyter lab. 这里记录一下本地环境的最佳构建方式. jupyter lab 安装在jupyterlab-local的anaconda 虚拟环境中.建立多个其他虚拟环境安装各种python包实现环境隔离,…

Untiy UDP局域网 异步发送图片

同步画面有问题,传图片吧 using System.Text; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using System.Net; using System; using System.Threading.Tasks; using Sy…

Android studio中如何下载sdk

打开 file -> settings 这个页面, 在要下载的 SDK 前面勾上, 然后点 apply 在 platforms 中就可以看到下载好的 SDK: Android SDK目录结构详细介绍可以参考这篇文章: 51CTO博客- Android SDK目录结构

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果

什么是分布式锁?他解决了什么样的问题?

相信对于朋友们来说,锁这个东西已经非常熟悉了,在说分布式锁之前,我们来聊聊单体应用时候的本地锁,这个锁很多小伙伴都会用 ✔本地锁 我们在开发单体应用的时候,为了保证多个线程并发访问公共资源的时候,…

2023最新SSL证书在线申请系统源码 | 支持API接口

2023最新SSL证书在线申请系统源码 | 支持API接口 SSL证书保证网络安全的基本保障。向您介绍我们的在线生成SSL证书系统 支持在线生成SSL证书系统,用户登录可在线申请SSL,后台对接ssl证书API接口 测试运行环境:NginxPHP8.0MySQL5.7 源码下…

Android事件分发机制源码解析

触摸事件传递机制是Android中一块比较重要的知识体系,了解并熟悉整套的传递机制有助于更好的分析各种滑动冲突、滑动失效问题,更好去扩展控件的事件功能和开发自定义控件。 预备知识 MotionEvent 在Android设备中,触摸事件主要包括点按、长…

Android 启动优化案例:WebView非预期初始化排查

去年年底做启动优化时,有个比较好玩的 case 给大家分享下,希望大家能从我的分享里 get 到我在做一些问题排查修复时是怎么看上去又low又土又高效的。 1. 现象 在我们使用 Perfetto 进行app 启动过程性能观测时,在 UI 线程发现了一段 几十毫…

使用接口包装器模块简化在FPGA上实现PCIe的过程

许多最终应用程序都将基于FPGA的设计用作其解决方案的固有组件。他们通常需要PCI Express(PCIe)作为必不可少的功能,以提供与系统中其他组件的标准化接口。 从历史上看,PCI Express一直难以在FPGA中实现,因为它需要具…

【AI视野·今日Robot 机器人论文速览 第三十八期】Thu, 21 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Thu, 21 Sep 2023 Totally 39 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Model-free tracking control of complex dynamical trajectories with machine learning Authors Zheng Meng Zhai, Mohammad…