TreeSet:可以对Set集合的元素进行排序,是不同步的
public class TreeSetDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
TreeSet ts = new TreeSet();
Person p1 = new Person("张三",21);
Person p2 = new Person("李四",23);
Person p3 = new Person("王五",25);
ts.add(p1);
ts.add(p2);
ts.add(p3);
System.out.println(ts);
}
}
这需要我们自定义类继承Comparable接口并重写其compareTo()方法
public int compareTo(Object o) {
// TODO 自动生成的方法存根
Person p = (Person)o;
return this.name.compareTo(p.name);
}
如果不要按照对象的自然顺序进行排序,如果对象中不具备自然顺序
那么可以使用TreeSet集合的第二种排序方式 让集合自身具备比较功能 定义一个类实现Comparator接口,覆盖compare方法 将该类对象作为参数传递给TreeSet集合的构造函数
public class TreeSetDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
TreeSet ts = new TreeSet(new MyComparator());
Person p1 = new Person("d",25);
Person p2 = new Person("s",23);
Person p3 = new Person("a",25);
Person p4 = new Person("b",27);
ts.add(p1);
ts.add(p2);
ts.add(p3);
ts.add(p4);
System.out.println(ts);
}
}
class MyComparator implements Comparator
{
@Override
public int compare(Object o1, Object o2) {
// TODO 自动生成的方法存根
Person p1 = (Person)o1;
Person p2 = (Person)o2;
return p1.getName().compareTo(p2.getName());
}
}