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

Java list

在 Java 中,链表(LinkedList)是一个非常重要的数据结构,它可以动态地插入和删除元素,因此比数组更灵活。Java 提供了 LinkedList 类,该类实现了 List 接口,并且是基于双向链表实现的,因此支持高效的插入、删除操作,尤其是在列表的两端。

LinkedList 类位于 java.util 包中,提供了许多用于操作链表的方法。

1. 创建链表

import java.util.LinkedList;LinkedList<String> list = new LinkedList<>();

2. 链表常用方法及详细说明

2.1 add(E e)
  • 功能:将指定的元素添加到链表的末尾。
  • 返回类型boolean(对于 LinkedList,始终返回 true
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");  // 添加 "Apple" 到末尾
list.add("Banana");  // 添加 "Banana" 到末尾
System.out.println(list);  // 输出: [Apple, Banana]
2.2 addFirst(E e)
  • 功能:将指定的元素添加到链表的开头。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.addFirst("Orange");  // 将 "Orange" 添加到开头
System.out.println(list);  // 输出: [Orange, Apple]
2.3 addLast(E e)
  • 功能:将指定的元素添加到链表的末尾。实际上,这与 add() 方法相同,因为 LinkedList 是一个双向链表。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.addLast("Banana");  // 将 "Banana" 添加到末尾
System.out.println(list);  // 输出: [Apple, Banana]
2.4 remove()
  • 功能:移除并返回链表的第一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removed = list.remove();  // 移除并返回第一个元素 "Apple"
System.out.println(removed);  // 输出: Apple
System.out.println(list);  // 输出: [Banana]
2.5 removeFirst()
  • 功能:移除链表的第一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedFirst = list.removeFirst();  // 移除第一个元素 "Apple"
System.out.println(removedFirst);  // 输出: Apple
System.out.println(list);  // 输出: [Banana]
2.6 removeLast()
  • 功能:移除链表的最后一个元素。如果链表为空,抛出 NoSuchElementException
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedLast = list.removeLast();  // 移除最后一个元素 "Banana"
System.out.println(removedLast);  // 输出: Banana
System.out.println(list);  // 输出: [Apple]
2.7 get(int index)
  • 功能:返回链表中指定位置的元素(基于零索引)。
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String element = list.get(1);  // 获取索引为 1 的元素 "Banana"
System.out.println(element);  // 输出: Banana
2.8 set(int index, E element)
  • 功能:替换链表中指定位置的元素。
  • 返回类型E(返回被替换的元素)
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.set(1, "Orange");  // 将索引 1 的元素 "Banana" 替换为 "Orange"
System.out.println(list);  // 输出: [Apple, Orange]
2.9 remove(int index)
  • 功能:移除链表中指定位置的元素,并返回该元素。
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String removedElement = list.remove(1);  // 移除索引为 1 的元素 "Banana"
System.out.println(removedElement);  // 输出: Banana
System.out.println(list);  // 输出: [Apple]
2.10 peek()
  • 功能:返回链表的第一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
String first = list.peek();  // 获取第一个元素 "Apple",但不移除
System.out.println(first);  // 输出: Apple
System.out.println(list);  // 输出: [Apple]
2.11 peekFirst()
  • 功能:返回链表的第一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
String first = list.peekFirst();  // 获取第一个元素 "Apple"
System.out.println(first);  // 输出: Apple
2.12 peekLast()
  • 功能:返回链表的最后一个元素,但不移除它。如果链表为空,返回 null
  • 返回类型E
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
String last = list.peekLast();  // 获取最后一个元素 "Banana"
System.out.println(last);  // 输出: Banana
2.13 clear()
  • 功能:移除链表中的所有元素。
  • 返回类型void
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
list.clear();  // 清空链表
System.out.println(list);  // 输出: []
2.14 contains(Object o)
  • 功能:检查链表中是否包含指定的元素。
  • 返回类型boolean
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
boolean containsApple = list.contains("Apple");  // true
boolean containsOrange = list.contains("Orange");  // false
System.out.println(containsApple);  // true
System.out.println(containsOrange);  // false
2.15 size()
  • 功能:返回链表中元素的个数。
  • 返回类型int
  • 示例
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
int size = list.size();  // 2
System.out.println(size);  // 2

3. 遍历链表

3.1 使用普通 for 循环遍历
LinkedList<String> list = new LinkedList<>();
list.add("Apple");
list.add("Banana");
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}
3.2 使用增强型 for 循环遍历(foreach)
for (String item : list) {System.out.println(item);
}
3.3 使用 Iterator 遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

4. 总结

LinkedList 提供了灵活的方式来处理链表中的元素。以下是一些常用的方法:

  • add()addFirst()addLast():添加元素。
  • remove()removeFirst()removeLast():移除元素。
  • get()set():访问或修改元素。
  • peek()peekFirst()、`peekLast
http://www.lryc.cn/news/488912.html

相关文章:

  • MAC借助终端上传jar包到云服务器
  • 对原jar包解压后修改原class文件后重新打包为jar
  • YY币支付系统改源码(改良版本)
  • 【Swift】类型标注、类型安全和类型推断
  • 06 —— Webpack优化—压缩过程
  • uniapp页面样式和布局和nvue教程详解
  • 单条推理转批量推理prompt
  • 网络安全审计概述与分类
  • 【已解决】“EndNote could not connect to the online sync service”问题的解决
  • 数据脱敏工具:基于 FFmpeg 的视频批量裁剪
  • Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC
  • 「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
  • 【UGUI】Unity 背包系统实现02:道具信息提示与显示
  • 掌握移动端性能测试利器:深入JMeter手机录制功能
  • springboot010大学生入学审核系统的设计与实现(源码+包运行+LW+技术指导)
  • Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
  • 从繁琐到优雅:用 PyTorch Lightning 简化深度学习项目开发
  • UE5 第一人称射击项目学习(完结)
  • Banana Pi BPI-CanMV-K230D-Zero 采用嘉楠科技 K230D RISC-V芯片设计
  • 【vim】使用 gn 组合命令实现搜索选中功能
  • 【Python刷题】广度优先搜索相关问题
  • 竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】
  • 早期超大规模语言模型的尝试——BLOOM模型论文解读,附使用MindSpore和MindNLP的模型和实验复现
  • 二分查找题目:有序数组中的单一元素
  • springboot基于Android的华蓥山旅游导航系统
  • 面向对象编程(OOP)深度解析:思想、原则与应用
  • iPhone 17 Air看点汇总:薄至6mm 刷新苹果轻薄纪录
  • 「OpenCV交叉编译」ubuntu to arm64
  • Stable Diffusion的解读(二)
  • amd显卡和nVidia显卡哪个好 amd和英伟达的区别介绍