A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 新手ing 于 2015-7-11 21:57 编辑

一。对象自身具备比较性(实现Comparable接口,重写compareTo方法)
class Person implements Comparable{
    private String name;
    private int 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;
    }
    Person(String name ,int age){
        this.name = name ;
        this.age = age ;
    }
   public   int compareTo(Object obj){
        if(!(obj instanceof Person)){
            throw new RuntimeException("不是Person对象");
        }
        Person p = (Person)obj;
        if(this.age>p.getAge()){
            return 1;
        }else if(this.age ==p.getAge()){
            return this.name.compareTo(p.getName());
        }
        return -1;
    }
}
二。对象自身没有实现Comparable接口
//Person类定义
class Person{
    private String name;
    private int 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;
    }
    Person(String name ,int age){
        this.name = name ;
        this.age = age ;
    }
}
*************************************************
TreeSet定义方式。
TreeSet hs = new TreeSet(new Comparator() {
           public int compare(Object o1, Object o2){
              Person p1 = (Person)o1;
              Person p2 = (Person)o2;
              int i = p1.getAge()-p2.getAge();
              if(i==0){
                  i = p1.getName().compareTo(p2.getName());
              }
              return i;
           }
       });



您需要登录后才可以回帖 登录 | 加入黑马