本帖最后由 张向辉 于 2013-1-27 18:05 编辑
摘自:张孝祥面试题大全
-------------------------------------------------------------
TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的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());
- }
- }
复制代码
总结:添加谁的对象就调用谁的compareTo()方法。 |
|