黑马程序员技术交流社区

标题: TreeSet集合的底层是怎么实现元素排序的? [打印本页]

作者: 下海的鱼儿    时间: 2015-4-24 23:25
标题: TreeSet集合的底层是怎么实现元素排序的?
如题,今天看视频,貌似老师没有讲到
作者: duzhi409    时间: 2015-4-25 00:11
Set集合底层其实使用的是Map集合,在API文档中你能找到,覆写hashcode和equals方法
然后实现comparable和comparator接口,实现compareTo和compare方法进行自然排序

毕老师的视频我今天刚看到
作者: lingda21    时间: 2015-4-25 00:34
HashSet集合添加对象时,一定会要用到hascode()方法去判断哈希值是否相同,若哈希值不相同则肯定不是重复元素,
  如果相同,再用equals()方法进一步判断元素是否重复
而treeSet,它是comparablej接口的无参构造,和比较器comparator带参构造实现,具体查查api哈
作者: 我想努力半年    时间: 2015-4-25 00:43
hashCode和equals两个方法把
作者: showdy    时间: 2015-4-25 00:47
不管是hashset 还是treeset都是调用add()添加元素时,由于add()代码的差异造成差异,hashset中的add()本质在自定义对象中是重写hashcode()和重写equals方法;而Treeset中的add()方法本质在于实现comparable和comparator接口,实现接口的中的compare()方法,compare()返回值是int,int的正负及零决定元素的存储顺序以及出去重复元素。
作者: 下海的鱼儿    时间: 2015-4-25 23:19
duzhi409 发表于 2015-4-25 00:11
Set集合底层其实使用的是Map集合,在API文档中你能找到,覆写hashcode和equals方法
然后实现comparable和co ...

好的谢谢 今天我重新复习了
作者: 下海的鱼儿    时间: 2015-4-25 23:26
showdy 发表于 2015-4-25 00:47
不管是hashset 还是treeset都是调用add()添加元素时,由于add()代码的差异造成差异,hashset中的add( ...

谢谢,理解啦
作者: 鸡脑壳    时间: 2015-4-25 23:34
showdy 发表于 2015-4-25 00:47
不管是hashset 还是treeset都是调用add()添加元素时,由于add()代码的差异造成差异,hashset中的add( ...

简单粗暴的答案
作者: daividtu    时间: 2015-11-10 15:34
理解了                       !




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