* 使用TreeSet集合存储自定义对象,完成比较器排序
* 主要条件:按照学生的年龄从小到大
* 构造方法
* public TreeSet(Comparator<? super E> comparator)
* 使用比较器排序:
* 构造方法的形式参数是一个接口,如何传递接口这个参数呢?
* 1)需要传递该接口的子实现类对象
* 2)使用接口的匿名内部类
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
//创建TreeSet集合对象,有参构造
// public TreeSet(Comparator<? super E> comparator)
//创建出实现比较器排序类对象
MyComparator my=new MyComparator();
TreeSet<Student> ts=new TreeSet<Student>(my);
//创建学生对象
Student s1=new Student("ll",20);
Student s2=new Student("pp",30);
Student s3=new Student("mm",40);
Student s4=new Student("nn",50);
Student s5=new Student("pp",60);
Student s6=new Student("oo",70);
Student s7=new Student("ll",20);
//添加学生
ts.add(s7);
ts.add(s6);
ts.add(s5);
ts.add(s4);
ts.add(s3);
ts.add(s2);
ts.add(s1);
//遍历
for(Student s:ts) {
System.out.println(s.getName()+" "+s.getAge());
}
}
}
import java.util.Comparator;
//自定义实现Comparator:比较器排序
public class MyComparator implements Comparator<Student> {
@Override
public int compare(Student s1, Student s2) {
//s1-->this
//s2-->s
//注意条件:按照学生的年龄从小到大排序
int num=s1.getAge()-s2.getAge();
//次要条件:年龄的内容
int num2=(num==0)?(s1.getName().compareTo(s2.getName())):num;
return num2;
}
}
public class Student {
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}