【Java 基础】-- ArrayList 和 Linkedlist

目录

1. Java 中的 ArrayList 和 LinkedList 简介

ArrayList

LinkedList

2. 相同数量级下的内存开销对比

ArrayList 的内存开销

LinkedList 的内存开销

3. 它们的速度对比

总结


1. Java 中的 ArrayList 和 LinkedList 简介

ArrayList
  • 数据结构:基于动态数组实现。
  • 特点
    • 元素按索引存储,随机访问效率高(时间复杂度 O(1)O(1)O(1))。
    • 动态扩容机制,扩容时会重新分配更大的数组,并将旧数组中的元素复制过去。
    • 插入或删除时,若非在末尾操作,需要移动大量元素(时间复杂度最差为 O(n)O(n)O(n))。
  • 适用场景:频繁读取或操作末尾元素的场景。
LinkedList
  • 数据结构:基于双向链表实现。
  • 特点
    • 每个节点存储数据及前后节点的引用。
    • 插入或删除元素时,只需调整引用,效率较高(时间复杂度 O(1)O(1)O(1) 对于给定节点位置)。
    • 访问元素时需要从头/尾节点开始遍历(时间复杂度 O(n)O(n)O(n))。
  • 适用场景:频繁插入或删除中间元素的场景。

2. 相同数量级下的内存开销对比

ArrayList 的内存开销
  • 存储元素的连续内存块 + 数组的额外空间(动态扩容时)。
  • 每个元素仅占用对象引用的大小(通常是 4 字节或 8 字节,具体取决于 JVM 配置)。
  • 动态数组可能浪费一定空间(未使用的容量)。
LinkedList 的内存开销
  • 每个节点需要存储数据及两个引用(前驱节点和后继节点)。
  • 除了数据本身,还需要额外的内存开销来存储这些引用。
  • 内存占用大幅高于 ArrayList。

在相同数量级下,LinkedList 的内存开销明显高于 ArrayList,尤其在存储大量元素时。


3. 它们的速度对比

操作ArrayListLinkedList
随机访问O(1)O(1)O(1):直接通过索引访问。O(n)O(n)O(n):需要逐个遍历节点。
插入(中间位置)O(n)O(n)O(n):需要移动元素。O(1)O(1)O(1):只需调整引用(需定位节点)。
插入(末尾)O(1)O(1)O(1):动态扩容后开销较高。O(1)O(1)O(1):无需额外操作。
删除(中间位置)O(n)O(n)O(n):需要移动元素。O(1)O(1)O(1):只需调整引用(需定位节点)。
删除(末尾)O(1)O(1)O(1):直接移除尾部元素。O(1)O(1)O(1):直接移除尾节点。

总结

  1. 内存开销

    • LinkedList 更高,因为每个节点需要额外的引用存储。
    • ArrayList 更节省内存。
  2. 性能

    • ArrayList 适合频繁随机访问、追加元素。
    • LinkedList 更适合频繁的中间插入和删除操作。

综合考虑内存和速度,多数场景下更推荐使用 ArrayList,除非有明确的需求(如频繁中间插入/删除)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0

一、vueelementui实现下拉表格多选搜索1.0 二、vueelementui实现下拉表格多选搜索分页回显全选2.0 在1.0的基础上,终于可以实现在下拉框表格分页的前提下不同页码的回显辣,分页是前端来分页的(代码略乱且没有封装还很长,随便看看…

被裁20240927 --- 嵌入式硬件开发 前篇

前篇主要介绍一些相关的概念,用于常识扫盲,后篇开始上干货! 他捧着一只碗吃过百家的饭 1. 处理器芯片1.1 处理器芯片制造商一、 英特尔(Intel)二、 三星(SAMSUNG)三、 高通(Qualcomm…

【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)

最近在忙联通的安全准入测试,很少有时间看CTF了,今晚抽点时间回顾下上周线下的题(期末还没开始复习😢) 感觉做渗透测试一半的时间在和甲方掰扯&水垃圾洞,没啥惊喜感,还是CTF有意思 目录 Mountain ez_zhuawa 图…

高阶:基于Python paddleocr库 提取pdf 文档高亮显示的内容

预览 第1步:理解基本结构和导入必要的库 # 1. 首先导入需要的库 import os # 用于处理文件和路径 import cv2 # 用于图像处理 import numpy as np # 用于数值计算 from paddleocr import PaddleOCR # 用于文字识别 from pdf2image import convert_from_path #…

保护模式基本概念

CPU 架构 RISC(Reduced Instruction Set Computer) 中文即"精简指令集计算机”。RISC构架的指令格式和长度通常是固定的(如ARM是32位的指令)、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕 CISC&…

@vue/cli启动异常:ENOENT: no such file or directory, scandir

参考:https://blog.csdn.net/qq_44355188/article/details/122239566 首先异常报错是:ENOENT: no such file or directory, scandir ‘D:\Data\Project\VueProject\hello\node_modulesvue\cli-plugin-eslint\locales’;我的vue/cli版本是 4.5.15 重点是…

全视通物联数据中台解决方案助力智慧医院新时代

全国医院物联网大会系列活动暨【行走的课堂】标杆研学 四川站“医院物联网应用创新经验交流会”,近日在成都召开。珠海全视通信息技术有限公司总经理林三朝以《物联网技术助力医院高质量发展》为题做了精彩演讲。林总就物联网技术如何助力医院高质量发展&#xff0c…

QT程序发布后,mysql在其它电脑设备无法连接数据库

QT程序发布后,mysql在其它电脑设备无法连接数据库 D:\mysql-5.7.24-winx64\lib, mysql-5.7.24-winx64是一个压缩包,用于启动mysql服务,创建数据库 压缩包 解决方法: 拷贝库到exe的相同目录,libmysql.dll,libmysql.li…

vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)

扫描出ip为192.168.121.161 访问该ip,发现只是一个静态页面什么也没有 使用dir dirsearch 御剑都只能扫描到/robots.txt /server-status 两个页面,前者提示我们什么也没有,后面两个没有权限访问 扫描端口,存在81端口 访问&#x…

CNN、RNN、LSTM和Transformer之间的区别和联系

文章目录 CNN、RNN、LSTM和Transformer之间的区别和联系前言CNN(卷积神经网络)RNN(循环神经网络)LSTM(长短期记忆网络)Transformer四者之间的联系与区别Yolo算法简介Yolo和CNN的关系YOLO各版本 CNN、RNN、L…

f(f(x))=x^2 -11x+36, 求f(6)的值,

偶然看到的一个题目,一时兴起,做了一下。题目如下 简单粗暴的思路是待定系数法,盲猜f(x)是个2次函数,令f(x)ax^2bxc ,带入原式,发现矛盾(计算略)就想放弃了。 忽然看到如果带入6 的话&#xf…

微软远程桌面APP怎么用

微软远程桌面(Remote Desktop)客户端(RD Client)是一款由微软开发的应用程序,允许用户通过网络连接远程访问和控制另一台计算机。同时,微软远程桌面RD Client支持多种设备和操作系统,包括Window…

美国加州房价数据分析01

1.项目简介 本数据分析项目目的是分析美国加州房价数据,预测房价中值。 环境要求: ancondajupyter notebookpython3.10.10 虚拟环境: pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析…

PPO算法基础(一)

PPO近端策略优化算法 我们今天还是主要来理解PPO算法的数学原理。PPO是一种策略梯度方法,简单的策略梯度对每个样本(或者一组样本)进行一次梯度更新,对单个样本执行多个梯度步骤会导致一些问题,因为梯度偏差太大&…

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析: ​ 1. 与AI和机器学习的深度结合 趋势:LabVIEW正在向集成AI和机器学习方向发展,尤其是在数据处理、预测性维护和自动化控制领域。 原因:AI技术的普及使得实验和工业场景中的…

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…

【数据结构练习题】链表与LinkedList

顺序表与链表LinkedList 选择题链表面试题1. 删除链表中等于给定值 val 的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。4. 输入一个链表,输出该链…

细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV

目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH (1)w25flash.h (2) w25flash.c 1)W25Q16基本操作指令 2)计算地址的辅助功能函数 3)器…

框架程序设计-简答以及论述

目录 maven的pom作用: Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用,redis配置过程 Redis配置过程: SpringBoot缓存配置过程: AOP的五种增强注解: 论述题:包结构作用、…

如何在谷歌浏览器中启用语音搜索

想象一下,你正在拥挤的地铁上,双手都拿着沉重的购物袋,突然你想搜索附近的咖啡馆。此时如果你能通过语音而不是打字来进行搜索,那将多么的便利!在谷歌浏览器中,启用语音搜索功能就是这么简单而高效&#xf…