#ArrayList 和 LinkedList 的区别(超容易理解)

news2024/7/7 16:19:56

文章目录

        • 一、ArrayList和LinkedList查询之间的区别
        • 二、ArrayList和LinkedList插入之间的区别
        • 三.总结


一、ArrayList和LinkedList查询之间的区别

  • LinkedList 是基于链表实现的,适合插入。
  • ArrayList是基于数组实现的,适合查询。

ArrayList的优点:对于ArrayList,它真正的优点是按下标查询元素,相比于LinkedList,LinkedList也可以按下标查询元素,但是LinkedList需要对底层链表进行遍历,才能找到指定下标的元素,而ArrayList不用,指定下标进行查询,ArrayList 优于 LinkedList,所以这是ArrayList的优点。

但是,如果我们讨论的是获取第一个元素,或最后一个元素,ArrayList和LinkedList在性能上是没有区别的,因为LinkedList中有两个属性分别记录了当前链表中的头结点和尾结点,并不需要遍历链表。

以上,是对于ArrayList和LinkedList在查询方面的区别

二、ArrayList和LinkedList插入之间的区别

ArrayList 的添加操作是存在扩容的情况,并且对于 ArrayList 的添加操作要分情况考虑。

  • 在最后的位置添加元素,不需要移动,需要扩容
  • 在指定的位置添加元素,指定位置的元素及后面的元素,均往后移动;效率相对较慢。(因为指定了位置,所以不用去遍历查找,但是需要移动元素)
  • 可以插入到指定下标位置,或者数组末尾,这种插入普通情况下是很快的,但是如果某次插入操作触发了扩容,那么本次插入就增加了额外的扩容成本。

LinkedList 的添加操作是不存在扩容的情况。

  • 如果是插在链表的头部或者是尾部都是很快的,因为LinkedList中有单独的属性记录的链表的头结点和尾结点,不过,如果是插在指定下标位置,那么就需要遍历链表找到指定位置,从而降低了效率。

三.总结

以下情况使用 ArrayList

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
  • 做双端队列使用

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

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

相关文章

ArcGIS_将多个点数据整合成一个点数据

问题描述:如何将多个点合并成一个点,并保留原始点数据的字段信息 方法一:整合 打开arcgis整合工具 :“数据管理工具——要素类——整合” 容差半径可以通过arcgis测量工具获取,根据自己的目标任务,选择合适的容差半径 该方法优点在于整合后的点可以正好位于原始点数据…

牛客网之SQL非技术快速入门(7)-字符串截取、切割、删除、替换

知识点: (1)substring_indexsubstring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:计数 (2)切割、截取、删除、替换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 select -- 替换法 replace(string, 被…

俺把所有粉丝显示在地图上啦~【详细教程+完整源码】

文章目录🌲小逼叨🌲爬取所有粉丝的IP所属地🌴爬者基本素养:网页分析🌴源代码🌲数据清洗和保存🌴源代码🌲绘制地图🌴源代码🌲结束语🌲小逼叨 其实昨…

windows中使用curl

curl这个工具在linux和macOS都经常使用,感觉挺实用的。在windows中默认也带了一个但是用起来不太一样,于是就想自己手动安装一个原汁原味的curl。 下载安装 https://curl.se/windows/ 下载适合自己平台的版本,解压就可以直接运行了。 比如…

剑指 Offer II 026. 重排链表【链表】

难度等级:中等 上一篇算法: 剑指 Offer II 021. 删除链表的倒数第 n 个结点【链表】 力扣此题地址: 剑指 Offer II 026. 重排链表 - 力扣(LeetCode) 1.题目:重排链表 给定一个单链表 L 的头节点 head &…

Linux用户和权限学习笔记

认识root用户 什么是root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员)而在前期,我们一直使用的账户是普通账户:itheim…

《Android Studio开发实战 从零基础到App上线(第3版)》出版后记

2018年11月,经过熬夜写作的《Android Studio开发实战 从零基础到App上线(第2版)》正式出版面世。承蒙众多读者的厚爱,第2版的图书在此后的三年多时间,一直保持在移动开发图书的销量排行榜前列,迄今为止京东对该书的评价已达8000多…

设计模式基础-概括

目录 一、设计原则 二、设计模式分类 1、创建型模式:创建对象 2、结构型模式:更大的结构 3、行为型模式:交互以及职责分配 4、对象模式与类模式区别 三、各类型模式简介 1、创建型模式 2、结构型模式 3、行为型模式 一、设计原则 …

JAVA中Function的使用

JAVA中Function的使用一、方法介绍参数类型方法介绍源码二、demo参考: https://blog.csdn.net/boyan_HFUT/article/details/99618833 一、方法介绍 表示接受一个参数并产生结果的函数。 参数类型 T - 函数输入的类型R - 函数的结果类型 方法介绍 R apply(T t) …

【毕业设计】45-基于单片机的智能温度/超温报警计的系统设计(原理图工程+仿真工程+源代码+答辩论文+答辩PPT)

【毕业设计】45-基于单片机的智能温度/超温报警计的系统设计(原理图工程仿真工程源代码答辩论文答辩PPT) 文章目录【毕业设计】45-基于单片机的智能温度/超温报警计的系统设计(原理图工程仿真工程源代码答辩论文答辩PPT)资料下载链…

Vue 路由

参考文献:Vue中的路由 目录:一、路由理解:二、路由管理器理解:三、路由的使用:四、嵌套路由:五、路由传参:1.query传参:2. params传参:六、编程式路由导航:七、响应路由参…

数字孪生技术有没有真正的实用价值?

作为一个数字孪生领域的技术公司负责人,我尽可能用比较直白的话来描述一下我对数字孪生行业以及数字孪生价值的理解。 纵观数字孪生相关的公司,主要有两个流派,一派是具有互联网基因的数字孪生创业公司,一派是在工业软件领域实力…

ConfigurableListableBeanFactory和BeanDefinitionRegistry关系

前言 :在查看springBoot源码的过程中,遇到了这个问题,上网查了一些资料,理解了一些,这里顺便把这个问题给记录一下。 在springBoot调用Refresh方法里面 ,有一个叫invokeBeanFactoryPostProcessors的方法【…

HIve数仓新零售项目ODS层的构建

HIve数仓新零售项目 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kaf…

WindowsPE(二)空白区添加代码新增,扩大,合并节

空白区添加代码 在 PE 中插入一段调用 MessageBox 的代码。 获取MessageBox地址,构造ShellCode代码 利 OD 定位出 MessageBoxA 函数的地址为 0x77D507EA 。 构造 shellcode : unsigned char shellcode[] {0x6A, 0x00, // pus…

ORB-SLAM2 ---- Initializer::ReconstructF函数

目录 1.函数作用 2.函数解析 2.1 调用函数解析 2.2 Initializer::ReconstructF函数总体思路 2.2.1 代码 2.2.2 总体思路解析 2.2.3 根据基础矩阵和相机的内参数矩阵计算本质矩阵 2.2.4 从本质矩阵求解两个R解和两个t解,共四组解 2.2.5 分别验证求解的4种…

准备面试题【面试】

前言 写作于 2022-11-13 19:27:08 发布于 2022-11-20 16:34:44 准备 程序员囧辉 我要进大厂 面试阿里,HashMap 这一篇就够了 Java 基础高频面试题(2022年最新版) 问遍了身边的面试官朋友,我整理出这份 Java 集合高频面试题…

【mysql】mysql 数据备份与恢复使用详解

一、前言 对一个运行中的线上系统来说,定期对数据库进行备份是非常重要的,备份不仅可以确保数据的局部完整性,一定程度上也为数据安全性提供了保障,设想如果某种极端的场景下,比如磁盘损坏导致某个时间段数据丢失&…

什么是Spring,Spring的核心和设计思想你了解吗?

目录 1.初识Spring 1.1 什么是容器 1.2 什么是IoC 2.什么是IoC容器. 2.1 什么是DI 哈喽呀,你好呀,欢迎呀,快来看一下这篇宝藏博客吧~~~ 1.初识Spring Srping指的是Spring Framework(Spring 框架).我们经常会听见框架二字,其中java中最最主流的框架当属Spring.Spring是一…

SAP S4 FI后台详细配置教程- PART4 (科目及税费相关配置篇)

目录 1、总帐科目 1.1编辑科目表清单 1.2 科目表分配给公司代码 1.3 定义科目组 1.4 定义留存收益科目 2、销售/购置税 2.1 维护销售/购置税务代码税率 2.2 配置销项/销项税会计科目 大家好本篇是:SAP S4 FI后台详细配置教程- PART4 (科目及税…