黑马程序员技术交流社区

标题: 刚看老师的讲课视屏,那个关于treeset。。。。。 [打印本页]

作者: 简★零度    时间: 2013-11-13 16:29
标题: 刚看老师的讲课视屏,那个关于treeset。。。。。
TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
看下面代码 请给我个解释 最好详细点 。
public class Parent implements Comparable {

private int age = 0;

public Parent(int age){

this.age = age;

}

public int compareTo(Object o) {

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) {

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

// Child o1 = (Child)o;

return 1;

}
}

public class TreeSetTest {

public static void main(String[] args) {

TreeSet set = new TreeSet();
set.add(new Parent(3));
set.add(new Child());
set.add(new Parent(4));
System.out.println(set.size());
}
}

作者: 低调的奢华    时间: 2013-11-13 17:49
这代码谁写的?我惊呆了!

作者: 简★零度    时间: 2013-11-13 18:49
低调的奢华 发表于 2013-11-13 17:49
这代码谁写的?我惊呆了!

怎么了?不就是现在学的,哪有有问题吗?
作者: 低调的奢华    时间: 2013-11-13 19:21
貌似是add谁调谁的compareTo方法,我只是觉得这代码是为出题才这么写的,看着难受。
作者: 简★零度    时间: 2013-11-13 20:03
低调的奢华 发表于 2013-11-13 19:21
貌似是add谁调谁的compareTo方法,我只是觉得这代码是为出题才这么写的,看着难受。 ...

嗯,就是题
作者: 狼王    时间: 2013-11-14 07:47
为了黑马,为了美好的未来,加油哈,兄弟




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2