在Java中,给成绩排序可以通过多种方法实现,以下是几种常见的方法:
方法一:使用Comparator接口
import java.util.Arrays;
import java.util.Comparator;
public class Student {
private String name;
private int age;
private double score;
// 构造函数和其他方法省略
public static void main(String[] args) {
Student[] students = new Student;
// 初始化学生数据
Arrays.sort(students, new Comparator
() { @Override
public int compare(Student s1, Student s2) {
int result = Double.compare(s2.score, s1.score);
if (result != 0) return result;
result = Integer.compare(s1.age, s2.age);
if (result != 0) return result;
return s1.name.compareTo(s2.name);
}
});
// 输出排序后的结果
}
}
方法二:使用Apache Commons Lang的CompareToBuilder
import org.apache.commons.lang3.builder.CompareToBuilder;
// 在Student类中
public int compareTo(Student other) {
return new CompareToBuilder()
.append(this.score, other.score) // 成绩降序
.append(this.age, other.age) // 年龄升序
.append(this.name, other.name) // 姓名升序
.toComparison();
}
方法三:使用Java 8的lambda表达式
import java.util.Arrays;
import java.util.Comparator;
public class Student {
private String name;
private int age;
private double score;
// 构造函数和其他方法省略
public static void main(String[] args) {
Student[] students = new Student;
// 初始化学生数据
Arrays.sort(students, (s1, s2) -> {
int scoreComparison = Double.compare(s2.score, s1.score);
if (scoreComparison != 0) return scoreComparison;
int ageComparison = Integer.compare(s1.age, s2.age);
if (ageComparison != 0) return ageComparison;
return s1.name.compareTo(s2.name);
});
// 输出排序后的结果
}
}
方法四:使用TreeSet集合
import java.util.TreeSet;
public class Student implements Comparable
{ private String name;
private int age;
private double score;
// 实现Comparable接口的compareTo方法
@Override
public int compareTo(Student other) {
int scoreComparison = Double.compare(other.score, this.score);
if (scoreComparison != 0) return scoreComparison;
int ageComparison = Integer.compare(this.age, other.age);
if (ageComparison != 0) return ageComparison;
return this.name.compareTo(other.name);
}
public static void main(String[] args) {
TreeSet
students = new TreeSet<>(); // 添加学生数据
for (Student student : students) {
System.out.println(student.name + " " + student.score);
}
}
}
以上是几种常见的排序方法,您可以根据具体需求选择合适的方法进行实现。