使用java流对一个list排序,list中存的是一个学生对象,先按照学生的成绩排序,如果成绩一样,再按照年龄排序
时间: 2024-05-05 08:18:50 浏览: 6
您好!既然问题涉及编程,我很乐意为您提供帮助。针对您的问题,我可以给出以下的Java代码实现。
```java
import java.util.*;
class Student implements Comparable<Student>{
String name;
int score;
int age;
public Student(String name, int age, int score){
this.name = name;
this.age = age;
this.score = score;
}
@Override
public int compareTo(Student other){
if(this.score != other.score){
return Integer.compare(this.score, other.score);
}
else{
return Integer.compare(this.age, other.age);
}
}
}
public class Main{
public static void main(String[] args){
List<Student> list = new ArrayList<>();
list.add(new Student("张三", 18, 80));
list.add(new Student("李四", 20, 90));
list.add(new Student("王五", 19, 80));
Collections.sort(list);
for(Student s : list){
System.out.println(s.name + "," + s.age + "," + s.score);
}
}
}
```
我们首先定义了一个学生对象Student,包含了姓名、年龄和成绩三个属性,并实现了compareTo方法来定义排序规则。如果两个学生的成绩不同,我们按照成绩排名;如果两个学生的成绩相同,我们按照年龄排序。
然后,我们创建了一个Student的List对象,将三个学生对象放入其中。使用Java内置的Collections.sort方法,对List进行排序,最后输出排序后的结果。
请注意,这里的排序是通过实现Comparable接口来完成的,也可以通过实现Comparator接口并传入Collections.sort方法中来完成。