目录
- 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 + "。");  }  
