本帖最后由 baidiBone 于 2013-12-26 23:23:35 编辑

解决方案 »

  1.   

    我是这么浅显的理解的,不知道可否?
    默认添加顺序 : c d b g f
    例一: s1.compareTo(s2)
      1. 当执行到tSet.add("d")时; 触发"d".compareTo("c")方法,由于返回正数,所以位置不变 
         任然是 c d b g f
      2. 当执行到tSet.add("b")时; 触发"b".compareTo("d")方法,由于返回负数,所以位置交换
         顺序: c b d g f
    再次触发"b".compareTo("c")方法,由于返回负数,所以位置交换
         顺序: b c d g f 
    以此类推s1.compareTo(s2)的流程
    例一: s2.compareTo(s1)
      1. 当执行到tSet.add("d")时; 触发"c".compareTo("d")方法,由于返回负数,所以位置交换 
         顺序 d c b g f也就是说compareTo返回负数,集合中的两个元素互换位置,返回正数则位置不变,不知道这样理解是否正确?
      

  2.   

    lz你的题目好傻,s1,s2都都对掉了,你竟然还问有啥区别。再看你后面的具体描述,原来lz你也是知道区别的啊。最后我只想说一句lz你想多了。set的插入就是有序插入,如何有序?就靠你提供的Comparator接口的compare函数。set只要知道怎么比较元素大小就行了,你所谓的考虑都是多余和莫名其妙的。
      

  3.   

    那能麻烦讲解下 compareTo 方法在比较两个对象顺序时的原理吗,也就是怎么进行的位置调换,我知道小于是负数,等于是0,大于是正数,而且比的也是ASCII码值,但是就是位置调换是否和我分析的是一样的~!