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

© 董志超 中级黑马   /  2012-10-26 06:34  /  1467 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

2 个回复

倒序浏览
当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,
代码示例:
public class Parent implements Comparable {

    private int age = 0;

    public Parent(int age){

       this.age = age;

    }

    public int compareTo(Object o) {

       // TODO Auto-generated method stub

       System.out.println("method of parent");

       Parent o1 = (Parent)o;

       return age>o1.age?1:age<o1.age?-1:0;

    }



}



public class Child extends Parent {



    public Child(){

       super(3);

    }

    public int compareTo(Object o) {



           // TODO Auto-generated method stub

           System.out.println("method of child");

//         Child o1 = (Child)o;

           return 1;



    }

}



public class TreeSetTest {



    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       TreeSet set = new TreeSet();

       set.add(new Parent(3));

       set.add(new Child());

       set.add(new Parent(4));

       System.out.println(set.size());

    }



}

希望楼主能明白。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马