TreeSet
TreeSet需要重写排序器compareTo的方法才能输出不会出错。这个是自然排序器
1 @Override 2 public int compareTo(Person o) { 3 // TODO Auto-generated method stub 4 return this.sid-o.sid; 5 }
然后在Temp类调用实体类的时候会用的到:
//自然排序器 // Set<Person> s=new TreeSet<>(); // System.out.println(new Person(1, "zs", 18)); // System.out.println(new Person(1, "zs", 18)); // System.out.println(new Person(1, "Is", 18).equals(new Person(1, "zs", 18))); // s.add(new Person(1, "zs", 18)); // s.add(new Person(1, "zs", 18)); // s.add(new Person(2, "Is", 19)); // s.add(new Person(3, "ww", 20)); // s.add(new Person(4, "qq", 21)); // System.out.println(s.size()); // for(Person p:s) { //默认转换String的类型 // System.out.println(p); // }
以上是它compareto自己的排序器,但是我们能自定义排序器的,接下来我们定义一个按照年龄的排序器:
1 package com.temp; 2 3 import java.util.Comparator; 4 5 public class Age implements Comparator<Person> { 6 7 @Override 8 public int compare(Person o1, Person o2) { 9 // TODO Auto-generated method stub 10 return o1.getSage()-o2.getSage(); 11 } 12 13 }
1 //自定义排序器 2 Set<Person> s=new TreeSet<>(new Age()); 3 System.out.println(new Person(1, "zs", 18)); 4 System.out.println(new Person(1, "zs", 18)); 5 System.out.println(new Person(1, "Is", 18).equals(new Person(1, "zs", 18))); 6 s.add(new Person(1, "zs", 18)); 7 s.add(new Person(1, "zs", 18)); 8 s.add(new Person(2, "Is", 19)); 9 s.add(new Person(3, "ww", 200)); 10 s.add(new Person(4, "qq", 21)); 11 System.out.println(s.size()); 12 for(Person p:s) { 13 //默认转换String的类型 14 System.out.println(p); 15 }
自定义自己的排序器后它就会按照我们的想要的排序去排序。上面这个就是按照年龄排序的自定义排序器