目录
- LinkedList
- 实例
LinkedList
LinkedList是Java中的一个重要的数据结构,它实现了List接口,提供了链表数据结构的实现。LinkedList类中包含了各种常用的链表操作,如添加、删除、查找等。
LinkedList的特点是元素可以动态地添加到链表的任意位置,并且链表中的元素可以按照它们被添加的顺序来遍历。由于LinkedList是基于链表实现的,因此它具有以下特点:
- 插入和删除操作可以在任何位置进行,时间复杂度为O(1)。
- 访问元素的操作可以在任何位置进行,时间复杂度为O(n)。
- 链表中的元素在内存中不是连续存储的,因此无法通过下标直接访问元素。
下面是一个简单的示例,演示如何使用LinkedList类:
import java.util.LinkedList;public class LinkedListExample {public static void main(String[] args) {// 创建一个新的LinkedList对象LinkedList<String> linkedList = new LinkedList<>();// 添加元素到链表末尾linkedList.add("Element 1");linkedList.add("Element 2");linkedList.add("Element 3");// 在指定位置插入元素linkedList.add(1, "Element 4");// 遍历链表并打印元素for (String element : linkedList) {System.out.println(element);}// 删除指定位置的元素linkedList.remove(1);// 遍历链表并打印元素for (String element : linkedList) {System.out.println(element);}}
}
输出:
Element 1
Element 4
Element 2
Element 3
实例
假设我们有一个学生名单,每个学生有一个名字和学号。我们想要创建一个可以添加、删除和查找学生的链表。
- 首先,我们需要创建一个Student类,表示每个学生:
public class Student { private String name; private int studentId; public Student(String name, int studentId) { this.name = name; this.studentId = studentId; } public String getName() { return name; } public int getStudentId() { return studentId; }
}
- 接下来,我们可以创建一个LinkedList的实例,并添加一些学生:
import java.util.LinkedList; public class Main { public static void main(String[] args) { // 创建一个新的LinkedList对象 LinkedList<Student> studentList = new LinkedList<>(); // 添加学生到链表末尾 studentList.add(new Student("Alice", 1)); studentList.add(new Student("Bob", 2)); studentList.add(new Student("Charlie", 3)); studentList.add(new Student("David", 4)); // 遍历链表并打印学生信息 for (Student student : studentList) { System.out.println("Name: " + student.getName() + ", Student ID: " + student.getStudentId()); } }
}
- 输出:
- 现在,如果我们想在链表的特定位置插入一个新学生,我们可以使用add方法:
// 在指定位置插入新学生(位置为2)
studentList.add(2, new Student("Eve", 5));
-
在Java的
LinkedList
类中,没有直接提供删除指定索引的学生的方法。但是,您可以通过以下步骤实现该功能:使用indexOf方法找到要删除学生的索引。
使用remove方法删除该索引处的元素。
// 要删除的学号 int studentIdToRemove = 3; // 查找要删除学生的索引 int index = -1; for (int i = 0; i < studentList.size(); i++) { Student student = studentList.get(i); if (student.getStudentId() == studentIdToRemove) { index = i; break; } } // 检查是否找到了要删除的学生 if (index != -1) { // 删除该索引处的元素(学生) studentList.remove(index); System.out.println("学生 " + studentIdToRemove + " 已被删除。"); } else { System.out.println("未找到学生 " + studentIdToRemove + "。"); }
- 根据学号查找学生,你可以使用Java中的 LinkedList 类的 indexOf 方法来找到具有特定学号的学生。
// 要查询的学号 int studentIdToFind = 5; // 查找具有指定学号的学生并输出其名字 Student foundStudent = null; for (Student student : studentList) { if (student.getStudentId() == studentIdToFind) { foundStudent = student; break; } } if (foundStudent != null) { System.out.println("找到了学生: " + foundStudent.getName() + ", 学号: " + foundStudent.getStudentId()); } else { System.out.println("未找到学生 " + studentIdToFind + "。"); }