遍历 Java 的 LinkedList
引言
在 Java 中,LinkedList 是一种常见的数据结构,用于存储和操作一系列的元素。与数组不同,LinkedList 的元素在内存中并不是连续存储的,而是通过链表的方式连接起来。这使得 LinkedList 在插入和删除操作上具有较好的性能,但在随机访问时效率较低。
遍历 LinkedList 是我们在实际开发中常常需要处理的问题之一。在本文中,我们将重点介绍如何遍历 Java 的 LinkedList,并解决一个实际的问题。
问题描述
假设我们有一个存储学生信息的 LinkedList。每个学生信息包含学号、姓名和年龄三个字段。现在我们需要遍历这个 LinkedList,并输出每个学生的信息。
解决方案
Java 的 LinkedList 类提供了多种遍历方式。我们可以使用迭代器(Iterator)和增强 for 循环(Enhanced For Loop)等方式来实现遍历。
下面将介绍两种常用的遍历方式,并给出示例代码。
方案一:使用迭代器遍历 LinkedList
迭代器是一种可以遍历集合的对象,通过调用其 next()
方法可以获取集合中的下一个元素。LinkedList 的迭代器可以通过 iterator()
方法获取。
示例代码如下:
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListTraversalExample {
public static void main(String[] args) {
LinkedList<Student> studentList = new LinkedList<>();
studentList.add(new Student(1, "Alice", 18));
studentList.add(new Student(2, "Bob", 19));
studentList.add(new Student(3, "Charlie", 20));
// 使用迭代器遍历 LinkedList
Iterator<Student> iterator = studentList.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
System.out.println(student);
}
}
}
class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
在上面的代码中,我们先使用 add()
方法向 LinkedList 中添加了三个学生信息。然后通过 iterator()
方法获取了 LinkedList 的迭代器对象。接下来,我们使用 while
循环和迭代器的 hasNext()
和 next()
方法遍历 LinkedList,并通过 toString()
方法输出每个学生的信息。
方案二:使用增强 for 循环遍历 LinkedList
增强 for 循环(也称为 for-each 循环)是 Java 5 引入的一种简化遍历集合的方式。通过增强 for 循环,我们无需显式地使用迭代器,可以直接遍历集合中的元素。
示例代码如下:
import java.util.LinkedList;
public class LinkedListTraversalExample {
public static void main(String[] args) {
LinkedList<Student> studentList = new LinkedList<>();
studentList.add(new Student(1, "Alice", 18));
studentList.add(new Student(2, "Bob", 19));
studentList.add(new Student(3, "Charlie", 20));
// 使用增强 for 循环遍历 LinkedList
for (Student student : studentList) {
System.out.println(student);
}
}
}
// Student 类的定义同上
在上面的代码中,我们直接使用增强 for 循环遍历 LinkedList,并通过 toString()
方法输出每个学生的信息。
实际问题解决
通过上述示例代码,我们可以很容易地遍历 LinkedList,并输出每个学生的信息。这在实际开发中很有实用性。
例如,我们可以根据学生的年龄进行筛选,找出年龄大于等于 20 岁的学生:
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListTraversalExample {
public static void main(String[] args) {
LinkedList<Student> studentList = new LinkedList<>();
studentList.add(new Student(1, "Alice", 18));
studentList.add(new Student(2, "Bob", 19