课堂编程实践
将学生类实例存入TreeSet ,自定义排序,排序规则是先根据Student的年龄升序排列,如果年龄相同则根据名称进行降序排列。
代码一:
import java.util.Comparator;
import java.util.TreeSet;
class Student{
private int age;
private String name;
public Student (int age,String name) {
this.age=age;
this.name=name;
}
public int getAge() {
return age;
}
public String getName(){
return name;
}
public String toString() {
return age+":"+name;
}
}
public class Example {
public static void main(String[]args) {
TreeSet ts=new TreeSet(new Comparator() {
public int compare(Object o1,Object o2) {
Student stu1=(Student )o1;
Student stu2=(Student)o2;
if(stu1.getAge()!=(stu2.getAge())) {
return stu1.getAge()-stu2.getAge();
}else {
return stu2.getName().compareTo(stu1.getName());
}
}
});
ts.add(new Student(2,"Mary"));
ts.add(new Student(1,"Jack"));
ts.add(new Student(3,"Lisa"));
ts.add(new Student(2,"Lily"));
System.out.println(ts);
}
}
代码二:
import java.util.Comparator;
import java.util.TreeSet;
class Student{
private int age;
private String name;
public Student (int age,String name) {
this.age=age;
this.name=name;
}
public int getAge() {
return age;
}
public String getName(){
return name;
}
public String toString() {
return age+":"+name;
}
}
class MyComparator implements Comparator{
public int compare(Object o1,Object o2) {
Student stu1=(Student )o1;
Student stu2=(Student)o2;
if(stu1.getAge()!=(stu2.getAge())) {
return stu1.getAge()-stu2.getAge();
}else {
return stu2.getName().compareTo(stu1.getName());
}
}
}
public class Example {
public static void main(String[]args) {
TreeSet ts=new TreeSet(new MyComparator());
ts.add(new Student(2,"Mary"));
ts.add(new Student(1,"Jack"));
ts.add(new Student(3,"Lisa"));
ts.add(new Student(2,"Lily"));
System.out.println(ts);
}
}
运行结果: