java树集TreeSet<E>类问题

书上说:
树集用add方法添加节点,节点会按其存放的数据的“大小”顺序一层一层地依次排列,在同一层中的节点从左到右按“大小”顺序递增排列,下一层的都比上一层的小。
然后给了一个例子和相应图示:

TreeSet<String> mytree = new TreeSet<String>();
        mytree.add("boy");
        mytree.add("zoo");
        mytree.add("apple");
        mytree.add("girl"); 

图片说明

这里不明白的是为什么是这么排列?boy和girl这两个单词?
树集TreeSet类究竟是按怎样一种方式排列数据的?

3个回答

主要靠泛型的类所实现的compareTo方法,你用的是String,他就是根据String中的compareTo方法进行排序的,比较的是编码的差值,如果你的泛型类型没有实现Comparable接口(compareTo方法),那就不能进行排序

qq869348527
qq869348527 回复zhuiyisinian: 谁大谁排在那个节点的右边,依次排,小的排在左边,你可以学一下二叉树
3 年多之前 回复
zhuiyisinian
北顾.岛城 我知道girl的ASCII值比boy小,但是我不知道它为什么排在boy的右边,如果再加一个k字母开头的单词,它又该排在哪儿?boy的下边,zoo的左边?还是girl的下边?
3 年多之前 回复
qq869348527
qq869348527 回复zhuiyisinian: 比较编码的差值啊,你可以写个测试类,"boy".compareTo("girl")看看结果
3 年多之前 回复
zhuiyisinian
北顾.岛城 那那个例子里它们为什么是那样排列的?
3 年多之前 回复
zhuiyisinian
北顾.岛城 这个我看了,可是那个例子里面那两个单词的排序我还是不理解
3 年多之前 回复

这是一个二叉树的排列,只需要根据先序遍历就能遍历出一格有序的队列,为什么boy比girl排在前面,是由于在asCLL码中b在g前面,参考阿斯克码表和字符串比较规则

zhangfei818588
zhangfei818588 不是说下一层的都比上一层的要小吗?以上这个图中的,"boy"和"girl"都比"apple"要大,但是"boy"和"girl"却都在"apple"的下层。"boy"和"girl"比"apple"大的判定方法为:。"boy"的首写字母b的ASCII码=98,"girl"的首写字母g的ASCII码=103,而"apple"的首写字母a的ASCII码=97.
大约 2 个月之前 回复
zhuiyisinian
北顾.岛城 那不应该是girl这个单词在boy和zoo之间吗?为什么在boy的右边
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问