import java.util.*;
public class Example13_6
{  public static void main(String args[])
   {   TreeSet mytree=new TreeSet();
       mytree.add("boy");
mytree.add("zoo");
       mytree.add("apple"); 
mytree.add("girl");
       Iterator te=mytree.iterator();
       while(te.hasNext())
         System.out.println(""+te.next());
  }
}
 结果:apple
boy
girl
zoo
这样的结果只能说明TreeSet既不是队列存储,也不是栈存储,只能是是树形存储!但是我就是想不明白它是怎么存储,怎么通过迭代器遍历才会打印出这个结果?

解决方案 »

  1.   


    实际存treemap里面,可以去看源代码
      

  2.   

    恩,底层是treemap,键值对中只使用了key,没有使用value,而且遍历的时候是按照二叉树的中序遍历的,它没插入一个数据总是根据比较原则把小的放在左子树,大的放在右子树,所以是按照中序遍历的
      

  3.   

    The elements are ordered using their natural ordering, or by a Comparator provided at set creation time1.使用自然顺序
    2.使用实现Comparator接口的方法排序
      

  4.   


    从代码看,是标准的二叉排序树的插入元素的算法,fixAfterInsertion这个方法我估计是做平衡的。遍历整个树时,应该用前序遍历。
      

  5.   

    常用方法 
        TreeSet.contains(xxx);
        TreeSet.add(xxx);
      

  6.   

    它是按字母顺序输出的
    a最小所以先被输出,z最大最后输出
    如果
        mytree.add("1"); 
    mytree.add("2"); 
          mytree.add("3"); 
    mytree.add("4");
    打印出的是
    1
    2
    3
    4
    这问题还得我自己解决~~~结帖能把20都给我自己么?哈哈~~