上一篇
在Java中创建链表主要有两种方式:一是直接使用内置的
java.util.LinkedList类,通过
new LinkedList()实例化;二是自定义链表结构,需创建
Node类(含数据和next指针),再通过节点间的引用来手动构建连接关系。
Java链表创建指南:从基础到实践
链表是一种动态数据结构,通过节点间的引用实现数据存储,在Java中,链表无需预先分配固定空间,可高效处理插入和删除操作,下面通过完整示例逐步讲解创建过程:
核心概念:节点(Node)
链表由节点构成,每个节点包含:

- 数据域:存储实际数据
- 指针域:指向下一个节点
class Node {
int data; // 节点存储的数据
Node next; // 指向下一个节点的引用
// 节点构造函数
public Node(int data) {
this.data = data;
this.next = null; // 初始指针指向null
}
}
创建链表类(LinkedList)
通过管理头节点实现链表操作:
public class LinkedList {
Node head; // 链表的起点
// 方法1:在链表尾部添加新节点
public void append(int data) {
Node newNode = new Node(data);
// 情况1:空链表
if (head == null) {
head = newNode;
return;
}
// 情况2:遍历到末尾插入
Node last = head;
while (last.next != null) {
last = last.next;
}
last.next = newNode;
}
// 方法2:遍历打印链表
public void printList() {
Node current = head;
while (current != null) {
System.out.print(current.data + " -> ");
current = current.next;
}
System.out.println("null");
}
}
实战应用示例
创建链表并执行操作:

public class Main {
public static void main(String[] args) {
LinkedList list = new LinkedList();
// 添加节点
list.append(10);
list.append(20);
list.append(30);
// 打印结果:10 -> 20 -> 30 -> null
list.printList();
}
}
链表 vs 数组:关键差异
| 特性 | 链表 | 数组 |
|---|---|---|
| 内存分配 | 动态扩展 | 固定大小 |
| 插入/删除效率 | O(1)(已知位置) | O(n)(需移动元素) |
| 随机访问 | O(n)(需遍历) | O(1)(通过索引) |
| 内存利用率 | 按需分配(无空间浪费) | 可能预留多余空间 |
适用场景:频繁增删数据(如实时日志处理)、未知数据量大小、实现栈/队列等高级结构。
进阶操作代码示例
// 在头部插入节点
public void prepend(int data) {
Node newNode = new Node(data);
newNode.next = head; // 新节点指向原头节点
head = newNode; // 更新头节点引用
}
// 删除指定值节点
public void delete(int key) {
if (head == null) return;
// 特殊情况:删除头节点
if (head.data == key) {
head = head.next;
return;
}
Node current = head;
while (current.next != null) {
if (current.next.data == key) {
current.next = current.next.next; // 跳过目标节点
return;
}
current = current.next;
}
}
最佳实践与注意事项
- 空指针检查:所有操作前需验证
head != null - 内存管理:Java自动垃圾回收移除无引用节点
- 线程安全:多线程环境建议使用
Collections.synchronizedList - 优化建议:维护尾指针可提升尾部插入效率
通过实现
Iterable接口,可使用增强for循环遍历链表:for (int value : myLinkedList) { System.out.println(value); }
引用说明
- Oracle官方Java文档:Collections Framework
- 《Java编程思想》(第4版)第11章 – 持有对象
- 链表数据结构定义参考自《算法导论》(第3版)第10.2章
本文代码遵循MIT开源协议,可自由用于学习和商业项目,实际开发中建议直接使用Java标准库中的
LinkedList类(java.util.LinkedList),其已实现线程安全优化和丰富操作方法。

