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

JAVA - LinkedList 与 ArrayList 区别和 LinkedList 的四大接口解析

什么是 LinkedList

  • LinkedList 就像一个火车车厢队列。每个“车厢”里装着一个数据(元素),而且每个车厢都知道:自己前面是哪节车厢previous,自己后面是哪节车厢next,所以它是一种 “链式结构”
  • 不像 ArrayList 是一整块“连续的座位”(数组)LinkedList 是一个一个用链子连接的“车厢”

LinkedList 的特点

  • 有序的:按照你加入的顺序排好 >>> 比如你依次加入 A、B、C,顺序就是 A→B→C
  • 可前后插入删除:在头尾都能插数据 >>> 比如 addFirst()addLast()
  • 插入删除快:不用挪动所有元素,只改“链子”连接 >>> 删除 B,只要让 A→C 重新连上
  • 查找慢:不能随机访问,要从头一个个找 >>> 要找第 10 个元素得从第 1 个开始走
  • 支持克隆和序列化:可以复制保存网络传输 >>> 比如保存到文件发送到别的机器

LinkedList 实现的接口

  • List:是一个“有顺序的列表” >>> 像排好队的学生
  • Deque双端队列,可以从头尾操作 >>> 像一列火车头尾都能挂车厢
  • Cloneable:能被克隆(复制)>>> 像拍照复制整列火车
  • Serializable:能被序列化(写入文件或网络)>>> 像把火车打包存档恢复

和 ArrayList 的区别(重点)

  • 底层结构:ArrayList 是数组,而 LinkedList 是链表
  • 查找速度:ArrayList 更快(O(1)),而 LinkedList 比较慢(O(n))
  • 插入删除:ArrayList 比较慢(要挪动元素),而 LinkedList 更快(改链接)
  • 是否支持双端操作:ArrayList 不支持,LinkedList 支持
  • 适合场景:ArrayList 查得多改得少,LinkedList 改得多查得少

LinkedList 简单例子

LinkedList<String> list = new LinkedList<>();list.add("A");
list.add("B");
list.addFirst("Start"); //从头加
list.addLast("End"); //从尾加System.out.println(list);
// 输出:[Start, A, B, End]

LinkedList 总结

  • LinkedList 是一个能从两头插入或删除的“链式队列”,查找不快,但插入删除灵活,实现了 ListDequeCloneableSerializable 四个接口。

LinkedList 的四大接口解析

List 接口

  • 有顺序的列表,你可以按位置访问元素。例如排队买奶茶,每个人都有自己的编号(位置),你可以直接喊:“请第 3 个人出来!”
  • 关键点
    • 保留顺序
    • 可以按索引访问、添加、删除
    • 典型方法get(index), add(index, element), remove(index)

Deque 接口

  • 双端队列(Double-Ended Queue),可以从两端操作。例如火车车厢既可以从火车头挂车厢,也可以从火车尾挂车厢。
  • 关键点
    • 可以在头尾添加或删除元素
    • 常用方法addFirst(), addLast(), removeFirst(), removeLast(), peekFirst(), peekLast()

Cloneable 接口

  • 可克隆,能复制自己
  • 关键点
    • 可以做一个一模一样的 LinkedList 副本
    • 关键方法clone()(浅拷贝,只复制元素引用,不复制元素本身)

Serializable 接口

  • 可序列化,能被“存档”或“传输”。比如把火车拆成零件打包寄给朋友,朋友再把它组装起来还是原来的火车。
  • 关键点
    • 存入文件、数据库,或通过网络发送
    • 实现 Serializable 的对象可以用 ObjectOutputStream 写入文件,用 ObjectInputStream 读取回来

四大接口总结

  • List排队买奶茶 >>> 有顺序,按位置操作元素
  • Deque火车两端加车厢 >>> 双端插入/删除元素
  • Cloneable镜子里的复制品 >>> 可以克隆(浅拷贝)
  • Serializable拆火车打包寄 >>> 可以序列化保存或传输
http://www.zskr.cn/news/18439.html

相关文章:

  • 完整教程:一文读懂费用分析:定义、分类与成本费用区别
  • AirBattery - 在Mac上实时监控所有苹果设备电量
  • 淘宝NPM镜像地址https://registry.npm.taobao.org不可用
  • 6 CF1034 div3 题解
  • 5 ABC413 题解
  • 4 CF 1032 div3 题解
  • the charm of Chinese language
  • 完整教程:lua代码解析1
  • system表空间丢失部分文件恢复---惜分飞
  • 二维数点
  • [20251010]建立完善tpt的prr.sql脚本.txt
  • Windows 电脑安装 XTerminal 1.25.1 x64 版(带安装包下载关键词)​
  • testtest
  • 使用eBPF技术保护FastAPI安全
  • 项目案例作业2:对案例进行面向对象分析
  • 多维索引技术优化数据湖查询性能
  • [USACO07NOV] Telephone Wire G
  • springboot配置多个数据源
  • 常量指针 和 指针常量
  • Apache POI:Java操控Office文档的利器
  • 【汇总】OPPO r9m 分区名、分区功能
  • 完整教程:LVDS系列30:Xilinx 7系 ADC LVDS接口参考设计(一)
  • 【JAVA】从入门到放弃-01-HelloWorld - 指南
  • 离线应用程序
  • 同步FIFO
  • 使用JaCoCo进行代码覆盖率分析
  • 【Java学习】【Java基础】--第1篇:入门Java和对面向对象的理解
  • 技术面:Spring (事务传播机制、事务失效的原因、BeanFactory和FactoryBean的关系)
  • AI元人文系列文章:决策范式与无为而治
  • Android Activity 生命周期深度解析:从原理到实战,面试考点全覆盖 - 指南