一、使用Comparator比较器:
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
class Student{
String name;
int score;
public Student(String name, int score) {
super();
this.name = name;
this.score = score;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.name+" "+this.score;
}
}
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Student [] s = {
new Student("skh",100),
new Student("xiaoming",98),
new Student("xiaohong",99),
new Student("azxx",100),
new Student("xh",99),
new Student("bz",100),
};
TreeSet <Student> set = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student a, Student b) {
int j = b.score - a.score;
if(j==0) {
return a.name.compareTo(b.name);
}
else
return j;
}
});
for(Student i:s) {
set.add(i);
}
for(Student i:set) {
System.out.println(i);
}
}
}
在这里实现按照成绩降序输出,如果成绩相同则按姓氏来排序,输出结果:
azxx 100
bz 100
skh 100
xh 99
xiaohong 99
xiaoming 98
二、使用Comparable接口方式来排序:
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
class Student implements Comparable<Student>{
String name;
int score;
public Student(String name, int score) {
super();
this.name = name;
this.score = score;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return this.name+" "+this.score;
}
@Override
public int compareTo(Student b) {
int j = b.score - this.score;
if(j==0) {
return this.name.compareTo(b.name);
}
else
return j;
}
}
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Student [] s = {
new Student("skh",100),
new Student("xiaoming",98),
new Student("xiaohong",99),
new Student("azxx",100),
new Student("xh",99),
new Student("bz",100),
};
TreeSet <Student> set = new TreeSet<Student>();
for(Student i:s) {
set.add(i);
}
for(Student i:set) {
System.out.println(i);
}
}
}
输出结果:
azxx 100
bz 100
skh 100
xh 99
xiaohong 99
xiaoming 98