定义一个学生类,用顺序表实现学生信息管理:重写顺序表的删除算法
时间: 2024-10-19 09:12:28 浏览: 11
当我们在Java中定义一个学生类并使用顺序表(通常称为数组)来存储学生信息时,首先我们需要创建一个表示学生的基本结构。这里我会提供一个简单的`Student`类和一个重写了删除操作的`ArrayList`版本,虽然在Java的标准库中`ArrayList`不是线程安全的,但在这种情况下我们可以忽略这个细节。
```java
import java.util.ArrayList;
// 学生类
class Student {
String name;
int id;
// 构造函数
public Student(String name, int id) {
this.name = name;
this.id = id;
}
// 获取名字的方法
public String getName() {
return name;
}
// 获取ID的方法
public int getId() {
return id;
}
}
// 自定义的顺序列表,继承自ArrayList并重写removeAt方法
public class CustomArrayList<T> extends ArrayList<T> {
@Override
public void removeAt(int index) {
if (index >= 0 && index < size()) {
super.remove(index);
// 如果要更新其他元素的位置,可以在这里调整,这里是简单版的示例
for (int i = index; i < size(); i++) {
System.out.println("Shift element " + elements[i] + " to position " + (i - 1];
}
elements[size() - 1] = null; // 清空最后一个位置
} else {
throw new IndexOutOfBoundsException("Index out of bounds");
}
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
CustomArrayList<Student> students = new CustomArrayList<>();
students.add(new Student("Alice", 101));
students.add(new Student("Bob", 102));
// 删除第一个学生
students.removeAt(0);
// 打印剩余的学生
for (Student student : students) {
System.out.println(student.getName());
}
}
}
```
在这个例子中,`CustomArrayList`类继承了`ArrayList`,然后覆盖了`removeAt`方法。当我们调用`removeAt`删除一个学生时,除了基础的移除操作外,还处理了数组元素移动的问题。
阅读全文