今天看TIJ,里面说treeset里的元素是基于红黑树来排序的,还说是有序的,这怎么理解,红黑树是什么?
还有书上说set中的元素都要实现comparable或用comparator,但我觉得只有treeset要实现(要基于它来排序),像hashset和linkedhashset没有必要也实现吧(顺序是由hash函数决定的)?头都快炸了,大家帮帮我吧,其实问题主要还是treeset是怎么实现的?

解决方案 »

  1.   

    TreeSet是SortedSet的子类,是靠Comparable接口中的compareTo()方法来维护一个顺序的,因此如果你不实现Comparable接口,你就无法把两个以上的元素放入一个TreeSet中。不是TreeSet实现Comparable,而是放入TreeSet中的元素要实现Comparable。HashSet和LinkedHashSet是不对元素进行排序的,因此不要求元素实现Comparable。红黑树是二叉树的一种,google一下就知道了,或者看看算法方面的书。
      

  2.   

    谁说过Set的元素都要实现comparable呀?
      

  3.   

    treeset不同于set,加入它的元素的确是需要实现comparable接口的。
      

  4.   

    Dan1980(有了Eclipse,再也不用记事本编程了,Eclipse真好!-我为Eclipse设计的广告语) 
    正解!