如果有学生信息
姓名 成绩
Zhang 80
Zhang 68
Zheng 71
Li 80
需要先按照姓名的字母顺序排序,如果字母相同,则按照成绩由小到大排序,这个在java中怎么实现呢?
输出结果如下
姓名 成绩
Li 80
Zhang 68
Zhang 80
Zheng 71
姓名 成绩
Zhang 80
Zhang 68
Zheng 71
Li 80
需要先按照姓名的字母顺序排序,如果字母相同,则按照成绩由小到大排序,这个在java中怎么实现呢?
输出结果如下
姓名 成绩
Li 80
Zhang 68
Zhang 80
Zheng 71
package com.kingsoft.main;
import java.util.Arrays;
public class SortTest {
public static void main(String[] args) {
Student s1 = new Student("Zhang", 80);
Student s2 = new Student("Zhbng", 68);
Student s3 = new Student("Zhcng", 71);
Student s4 = new Student("Li", 80);
Student[] ss = { s1, s2, s3, s4 };
// 以上是测试的数组
for (Student s : ss)
System.out.println(s);
// 这个就是排序了
Arrays.sort(ss);
System.out.println("=============");
for (Student s : ss)
System.out.println(s);
}
}
/**
*
* 类Student实现 Comparable接口,以方便排序
*
*
*/
class Student implements Comparable<Student> {
public String name;
public int point;
public Student() {
}
public Student(String name, int point) {
this.name = name;
this.point = point;
}
/**
*
* 实现Comparable<Student>接口的方法
*
*/
public int compareTo(Student o) {
int stringCompare = this.name.compareTo(o.name);
if (stringCompare == 0) {
// 如果名字比较相同,返回的是成绩的比较结果
return this.point - o.point;
} else {
// 如果名字比较不同,直接返回比较结果
return stringCompare;
}
}
/*
* 方便打印
*/
public String toString() {
return this.name + "\t" + point;
}
}