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 list = new LinkedList<>();
    list.add("Apple"); // 添加 "Apple" 到末尾
    list.add("Banana"); // 添加 "Banana" 到末尾
    System.out.println(list); // 输出: [Apple, Banana]

2.2 addFirst(E e)
  • 功能:将指定的元素添加到链表的开头。

  • 返回类型 :void

  • 示例:

    LinkedList 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 list = new LinkedList<>();
    list.add("Apple");
    list.addLast("Banana"); // 将 "Banana" 添加到末尾
    System.out.println(list); // 输出: [Apple, Banana]

2.4 remove()
  • 功能 :移除并返回链表的第一个元素。如果链表为空,抛出 NoSuchElementException。

  • 返回类型 :E

  • 示例:

    LinkedList 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 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 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 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 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 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 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 list = new LinkedList<>();
    list.add("Apple");
    String first = list.peekFirst(); // 获取第一个元素 "Apple"
    System.out.println(first); // 输出: Apple

2.12 peekLast()
  • 功能 :返回链表的最后一个元素,但不移除它。如果链表为空,返回 null。

  • 返回类型 :E

  • 示例:

    LinkedList list = new LinkedList<>();
    list.add("Apple");
    list.add("Banana");
    String last = list.peekLast(); // 获取最后一个元素 "Banana"
    System.out.println(last); // 输出: Banana

2.13 clear()
  • 功能:移除链表中的所有元素。

  • 返回类型 :void

  • 示例:

    LinkedList list = new LinkedList<>();
    list.add("Apple");
    list.add("Banana");
    list.clear(); // 清空链表
    System.out.println(list); // 输出: []

2.14 contains(Object o)
  • 功能:检查链表中是否包含指定的元素。

  • 返回类型 :boolean

  • 示例:

    LinkedList 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 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
相关推荐
Joy T1 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
m0_587383004 小时前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·4 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
代码不停5 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金7 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
paopaokaka_luck8 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
Wang's Blog8 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo
jack186898 小时前
Devin 智能软件工程师实战应用指南
windows
Wang's Blog8 小时前
Java 项目实战: 交友项目 - Dubbo 入门引导
java·dubbo·交友
蜗牛互联网9 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python