A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李月 中级黑马   /  2012-5-14 14:45  /  1839 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我知道保证Hashset的唯一性是覆盖hashcode和equals方法。那么TreeSet也是一样的吗?

TreeSet有比较器。HashSet有没有呢?

2 个回复

倒序浏览
本帖最后由 廖理 于 2012-5-14 14:59 编辑

因为HashSet的底层数据结构是哈希表,并且是无序的,这里的无序指的是存入和取出的顺序,并且他里卖弄的元素是不可重复的,
所以,HashSet依赖的方法是hashCode()和equals();用不到比较器,所以如果要装入HashSet中必须要复写hashcode和equals方法。


而TreeSet的底层结构是二叉树结构,并且是有序的,所以就需要用到比较器来限定比较的规则,决定谁前谁后。所以要将元素装入TreeSet
中,类必须实现Comparable接口并复写compareTo方法,或者定义一个实现了Comparator接口的比较器,并将此比较器的对象作为参数传入
TreeSet的构造函数
回复 使用道具 举报
hashset底层用到哈希表数据结构,来保正元素唯一性,
treeset底层用到了二叉树,放元素时就已经是有序的了(按键排序默认(你也可以用自己的比较器))。
hashset是无序的,你干吗还要排序,
hashset和hashmap是有关系的
hashset的底层是用hashmap来实现的,但是只用了hashmap键的部分,所以唯一性可以保证。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马