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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梵天的梦 中级黑马   /  2014-2-13 19:28  /  1006 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeSet为什么能排序而HashSet不能,他俩之间还有什么区别?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

4 个回复

倒序浏览
TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值
HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 奋斗的小胖子 于 2014-2-13 20:46 编辑

因为TreeSet可以用compareTo或者compare方法去排序的。。。。TreeSet 数据结构是二叉树.排序.是不同步的。。。。
HashSet 数据结构是哈希表.无序,是不同步的。。。。


回复 使用道具 举报
TreeSet会调用对象的compareTo方法进行排序,存入TreeSet的对象需要实现Compareble接口,然后覆盖campareTo方法。 比如String,所以String对象存入TreeSet后会自动排序。
HashSet也会对存入的对象排序,是根据对象的hash值来排序的,多以在我们看来是无序的。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
TreeSet底层是二叉树,本身就有顺序,而HashSet底层是哈希表,无序的!

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马