Java泛型单向链表通过Node<T>节点类和LinkedList<T>链表类实现,含addFirst、addLast、get等操作;节点含数据与next引用,链表维护head和size,支持类型安全的增删查。

Java 中实现泛型单向链表,核心是定义一个带类型参数的节点类(Node<T>)和一个封装操作的链表类(LinkedList<T>),通过引用连接节点,支持添加、删除、遍历等基本操作。
定义泛型节点类
每个节点保存数据和指向下一个节点的引用:
// 内部静态类,避免持有外部类引用
private static class Node<T> {
T data;
Node<T> next;
Node(T data) {
this.data = data;
this.next = null;
}
}
实现泛型链表主体类
维护头节点(head),提供常用方法:
public class LinkedList<T> {
Node<T> head;
int size;
public LinkedList() {
head = null;
size = 0;
}
public void addFirst(T data) {
Node<T> newNode = new Node<>(data);
newNode.next = head;
head = newNode;
size++;
}
public void addLast(T data) {
Node<T> newNode = new Node<>(data);
if (head == null) {
head = newNode;
} else {
Node<T> current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
size++;
}
public T get(int index) {
if (index = size) throw new IndexOutOfBoundsException();
Node<T> current = head;
for (int i = 0; i
current = current.next;
}
return current.data;
}
public boolean isEmpty() {
return head == null;
}
public int size() {
return size;
}
}
使用示例
可以存放任意引用类型,编译期检查类型安全:
立即学习“Java免费学习笔记(深入)”;
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.addLast("Hello");
list.addLast("World");
list.addFirst("Java");
for (int i = 0; i
System.out.println(list.get(i)); // Java → Hello → World
}
}
可选增强点
- 添加
remove(int index)或removeFirst()方法,注意更新head和size - 重写
toString()方便调试,用StringBuilder拼接所有元素 - 实现
Iterable<T>接口,支持 for-each 循环(需提供内部迭代器) - 对
null值支持做明确约定(例如允许存null,但get()返回null不代表越界)


















