黑马程序员技术交流社区

标题: TreeSet和Treemap的两种排序方式都是什么? [打印本页]

作者: TheBadboy    时间: 2015-8-15 17:26
标题: TreeSet和Treemap的两种排序方式都是什么?
TreeSet和Treemap的两种排序方式都是什么?  
它们两个的排序方式有什么不同?
作者: pengbeilin    时间: 2015-8-15 18:35

都是二叉树

作者: TheBadboy    时间: 2015-8-15 20:24
pengbeilin 发表于 2015-8-15 18:35
都是二叉树

具体一点这两个方法好吗
作者: cemabenteng    时间: 2015-8-15 20:50
这两个底层都是不一样的,一个时单列一个是双列
作者: 蓬头小道士    时间: 2015-8-15 21:14
Set,Map集合底层数据结构都是二叉树,Set集合元素是单个对象,Map集合里面元素师键值对。
作者: pengbeilin    时间: 2015-8-15 21:41
兄弟我只能帮你到这了!
图是TreeMap集合的底层!它是一对一对以键值对的形式存在!
TreeSet集合差不多,它是单个的!你就想象一下把值去掉,留下键就可以了!!就是那个样子

二叉树的原理2.png (54.75 KB, 下载次数: 13)

二叉树的原理2.png

作者: wode1311    时间: 2015-8-15 22:01
TreeSet和TreeMap排序方式的两种排序方式:(1)自然排序,集合中元素的类实现comparable接口,重写compare(Obje obj)方法;(2)比较器排序,定义一个类实现comparetor接口,将该类的实例化对象作为参数传递给集合,使集合具备比较性,也可以使用匿名内部类。   TreeSet的底层封装了TreeMap,通过TreeMap的键保证元素的唯一性,所以两者的排序方式基本一样
作者: TheBadboy    时间: 2015-8-15 22:38
wode1311 发表于 2015-8-15 22:01
TreeSet和TreeMap排序方式的两种排序方式:(1)自然排序,集合中元素的类实现comparable接口,重写compare ...

应该是TreeMap底层封装了TreeSet吧???

作者: wode1311    时间: 2015-8-15 22:57
TreeSet的底层封装的是TreeMap,通过TreeMap键值的唯一性,确保了TreeSet的唯一性,可以看看底层代码。
作者: TheBadboy    时间: 2015-8-15 23:17
wode1311 发表于 2015-8-15 22:57
TreeSet的底层封装的是TreeMap,通过TreeMap键值的唯一性,确保了TreeSet的唯一性,可以看看底层代码。 ...

好吧,多谢
作者: dddlinux    时间: 2015-8-15 23:20
TreeSet如果想往里面放置对象,那么这个类,有复写hashCode()和equals()方法,保证Set集合元素的唯一性,而TreeMap存放的元素,需要实现comparable接口,或者在创建TreeMap传递一个比较器对象进去, 这么做事为了保证存放的元素能够排序
作者: TheBadboy    时间: 2015-8-16 10:14
dddlinux 发表于 2015-8-15 23:20
TreeSet如果想往里面放置对象,那么这个类,有复写hashCode()和equals()方法,保证Set集合元素的唯一性,而Tr ...

TreeMap存放的键值对是字符串对应数字的话,不用自然排序也不用比较器排序,为什么它还会自动排序?
作者: dddlinux    时间: 2015-8-16 11:56
public final class String extends Object implements Comparable<String>
这是API String类的定义,实现了Comparable这个接口,所以它是按自然排序的,不指定比较器也能排序




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2