使用Java任务: 完成Student类的比较器 (方法一,实现Comparable接口; 方法二,构造新的比较器类,实现Comparator接口) 要求:10名同学信息,以学号做为唯一区分: 将学生信息加入到TreeSet对象中, 按由小到大顺序输出数据。
时间: 2024-09-20 13:03:39 浏览: 29
java比较器Comparable接口与Comaprator接口的深入分析
在Java中,你可以通过两种方式为`Student`类创建一个比较器以便用于`TreeSet`:
**方法一:实现Comparable接口**
首先,你需要在`Student`类中添加一个整型变量作为学号,并让这个类实现`Comparable<Student>`接口。然后,实现`compareTo()`方法,按照学号进行排序。
```java
// Student.java
public class Student implements Comparable<Student> {
private String name;
private int studentID;
// constructor, getters and setters
@Override
public int compareTo(Student other) {
return Integer.compare(this.studentID, other.studentID);
}
}
// 主程序
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
List<Student> students = ... // 初始化10名同学的信息
TreeSet<Student> treeSet = new TreeSet<>();
treeSet.addAll(students);
for (Student student : treeSet) {
System.out.println(student.getName() + " (" + student.getStudentID() + ")");
}
}
}
```
**方法二:构造一个新的比较器类实现Comparator接口**
如果你不想直接在`Student`类上实现`Comparable`,可以创建一个单独的比较器类,比如`StudentComparator`,实现`Comparator<Student>`接口。
```java
// StudentComparator.java
import java.util.Comparator;
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
return Integer.compare(s1.getStudentID(), s2.getStudentID());
}
}
// 主程序
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
List<Student> students = ... // 初始化10名同学的信息
TreeSet<Student> treeSet = new TreeSet<>(new StudentComparator());
treeSet.addAll(students);
for (Student student : treeSet) {
System.out.println(student.getName() + " (" + student.getStudentID() + ")");
}
}
}
```
阅读全文