当前位置: 首页 > news >正文

ArrayList和LinkedList

一、介绍

- arraylist:底层数据结构是数组,特点就是内存连续存储,连续存储带来两个特性:1. 通过随机访问元素效率极高,因为可以很快根据索引计算出元素地址。2. 如果在头部中间进行增删,后面的元素就需要进行相应的挪动,这个操作成本很高。

- linkedlist:底层数据结构是双向链表,链表的特点就是在指定位置的增删操作非常高效,因为只需要更改指针引用。但是前提是指定位置已知,如果未知,找到需要操作的位置也需要O(n)的时间复杂度,也就是随机访问元素的时间复杂度。这么一看好像linkedlist只有在头尾操作快了。

二、对比

我在了解到这些后会认为linkedlist比较鸡肋,只在头尾操作快剩下的好像都比不过arraylist,事实上开发过程中大部分情况确实也都会使用arraylist,但是linkedlist也有用武之地:

操作ArrayListLinkedList说明
随机访问(get/set)​O(1)​O(n)ArrayList 的绝对优势
在头部插入/删除O(n)O(1)​LinkedList 的绝对优势
在尾部插入/删除O(1) (摊销)O(1)​两者都很快,但ArrayList可能触发扩容
在中间插入/删除O(n)O(n)查找时间 + 操作时间。但操作部分ArrayList需要移动元素,可能更耗时
使用迭代器遍历并删除O(n²) (最坏情况)O(n)​LinkedList 的核心优势场景

说明:

LinkedList 的优势不在于那些需要先按索引或值查找再操作的通用场景。它的优势在于:​

  1. 在数据结构的“两端”进行频繁的插入删除操作​(例如实现队列、栈)。
  2. 在已知节点(通常通过迭代器获得)上进行大量的、频繁的插入或删除操作,这时它能提供真正 O(1) 的修改性能,而 ArrayList 在修改时不可避免地需要移动大量数据。
http://www.dtcms.com/a/549272.html

相关文章:

  • 中南建设集团招标网站三点水网站建设合同
  • 网站结构分析具体分析内容企业建网站好
  • 深入探讨JavaScript性能瓶颈,分享优化技巧与最佳实践
  • Mac与Kali主机间SSH连接故障排除:主机密钥变更的解决方案
  • 跨平台C++开发:Ubuntu 24.04下CLion安装与配置
  • 网站不想被百度抓取涉及部署未备案网站
  • 国产数据库替换MongoDB实战:浙江人民医院电子病历系统国产化升级案例
  • 测量连接距离方法
  • 从文件结构、索引、数据更新、版本控制等全面对比Apache hudi和Apache paimon
  • 怎样看网站的浏览量自助建站免费建站平台
  • 怎么用AI进行视觉设计?AI设计全流程技术解析与实战指南
  • Flink 优化-资源配置优化
  • c# 收件单通知单生成程序
  • 类似淘宝的购物网站 建设定制开发网站
  • 【Rust 编程】工作窃取(Work-Stealing)调度算法
  • 做网站与运营一般多少钱企业seo指的是
  • 东莞网站建设设计价格提供手机网站制作哪家好
  • 百度ocr识别解决图形验证码登录问题
  • MySQL配置环境变量
  • springcache作用
  • BMC RTC:服务器硬件管理的“时间心脏”与系统协同核心
  • 使用vite+vue3+ElementPlus+pinia搭建中后台应用-前端
  • 开始改变第六天 MySQL(2)
  • 如何使用wordpress搭建网站广告咨询
  • 网站建设那个好北京大兴专业网站建设公司
  • 基于 GEE 的融合 MODIS 地表反射率、MCD12Q1 土地覆盖与 TERRACLIMATE 气候数据的研究区净初级生产力(NPP)计算方法研究
  • markdown-it
  • vector 的扩容机制
  • part1~2 神经网络基础
  • SQL注入过滤绕过fuzz字典