这是什么啊

17.java Comparato和Comparable的使用

public class TreeSetDemo01 {
 public static void main(String[] args) {
  MyComparator myComparator=new MyComparator();
  //让集合具有比较性
  TreeSet<Person> treeSet=new TreeSet<Person>(myComparator);
  treeSet.add(new Person("zhangsan",20));
  treeSet.add(new Person("lisi",29));
  System.out.println("treeSet="+treeSet);
 }
 /**
  * 自定义排序规则类,使用这种方式进行比较,不需要让对象本身具有比较性.或者对象本身的比较规则不符合要求,都可以使用这种
  * 方式进行比较
  *
  * 如果对象自身的比规则和当前比较器的比较规则发生冲突,以Comparator比较器的比较规则为准.
  * @author dell
  *也可以自定义比较器变成匿名内部类直接传值
  */
 private static final class MyComparator implements Comparator<Person>{
  public int compare(Person p1, Person p2) {
   int result=p2.getName().compareTo(p1.getName());
   if(result==0){
    return p1.getAge()-p2.getAge();
   }
   return result;
  }
// 当前类如果实现了Comparable接口,则说明这个类的对象具有比较性,比较规则通过Comparable接口中compareTo(Person person)指定.
//Comparable:让对象自身具有比较性
public class Person implements Comparable<Person>{
 private String name;
 private int age;
 public int compareTo(Person person) {
  System.out.println("====compareTo(Person person)=====");
  int result=this.age-person.age;//当前对象-与之比较的对象得到的排序结果为:由小到大
  //int result=person.age-this.age;//与之比较的对象-当前对象得到的排序结果为:由大到小
  if(result==0){
   return this.name.compareTo(person.name);//由小到大
   //return person.name.compareTo(this.name);//由大到小
  }
  return result;
 }}
posted @ 2015-12-03 22:37  陈旭缘  阅读(277)  评论(0编辑  收藏  举报
这是什么