自定义一个学生类,包含两个属性姓名,成绩。将几个学生对象存入到Tree Set集合中去,实现 成绩从高到低的顺序进行排序。 (使用自定义排序和自然排序两种方式实现)
时间: 2024-02-15 16:01:31 浏览: 77
好的,这是一个Java语言的问题,我来给您解答。
首先,我们需要自定义一个学生类:
```java
public class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student student) {
return student.score - this.score;
}
}
```
在这个学生类中,我们包含了姓名和成绩两个属性,并且实现了`Comparable`接口,重写了其`compareTo`方法,以便可以对学生对象进行排序。
然后,我们需要将几个学生对象存入到Tree Set集合中去。这里我们使用两种方式来实现。
第一种方式是使用自然排序,即直接将学生对象存入Tree Set集合中。由于我们已经实现了`Comparable`接口,所以Tree Set集合会自动按照成绩从高到低的顺序进行排序。
```java
public static void main(String[] args) {
Set<Student> set = new TreeSet<>();
set.add(new Student("张三", 80));
set.add(new Student("李四", 90));
set.add(new Student("王五", 70));
set.add(new Student("赵六", 85));
System.out.println(set);
}
```
输出结果为:
```
[李四(90), 赵六(85), 张三(80), 王五(70)]
```
第二种方式是使用自定义排序,即创建一个比较器来对学生对象进行排序。
```java
public static void main(String[] args) {
Comparator<Student> comparator = new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getScore() - s1.getScore();
}
};
Set<Student> set = new TreeSet<>(comparator);
set.add(new Student("张三", 80));
set.add(new Student("李四", 90));
set.add(new Student("王五", 70));
set.add(new Student("赵六", 85));
System.out.println(set);
}
```
输出结果同样为:
```
[李四(90), 赵六(85), 张三(80), 王五(70)]
```
阅读全文