1. 要求
对象student(id,name,sex,scroe,old);先按scroe排序,当scroe值相同时按old排序
2.解决办法,通过Arrays.sort(Object[])静态方法实现,但是对象需要实现Comparable
3.studen.java
public class Student implements Comparable { private Integer id; private String name; private String sex; private double score; private Integer old; public Student(Integer _id,String _name,String _sex,double _score,Integer _old){ this.setId(_id); this.setName(_name); this.setSex(_sex); this.setScore(_score); this.setOld(_old); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public Integer getOld() { return old; } public void setOld(Integer old) { this.old = old; } @Override public int compareTo(Object o) { Student others = (Student) o; if (this.score > others.score) return -1; else if (this.score == others.score) { if (this.old > others.old) return -1; else if (this.old == others.old) return 0; else return 1; } else return 1; } }
说明:compareTo(Object o) 根据jdk API是
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
4.测试类StudentSortDemo.java
public class StudentSortDemo { public static void main(String[] args) { Student[] student = { new Student(1,"Daffy","m",88, 23), new Student(2,"Dewey","w",69, 44), new Student(3,"Howard","m",66, 32), new Student(4,"Louie","w",78, 25), new Student(5,"Donald","m",69, 30), new Student(6,"Huey","w",55, 24) }; System.out.println("Before sorting:"); display(student); Arrays.sort(student); System.out.println("\nAfter sorting:"); display(student); } public static void display(Student[] student){ for (int i = 0; i < student.length; i++) { System.out.println("name:" + student[i].getName()+",score:"+student[i].getScore()+",old:"+student[i].getOld()); } } }
输出结果为:
Before sorting:
name:Daffy,score:88.0,old:23
name:Dewey,score:69.0,old:44
name:Howard,score:66.0,old:32
name:Louie,score:78.0,old:25
name:Donald,score:69.0,old:30
name:Huey,score:55.0,old:24
After sorting:
name:Daffy,score:88.0,old:23
name:Louie,score:78.0,old:25
name:Dewey,score:69.0,old:44
name:Donald,score:69.0,old:30
name:Howard,score:66.0,old:32
name:Huey,score:55.0,old:24