黑马程序员技术交流社区

标题: 问个TreeSet和HashSet的问题 [打印本页]

作者: 梵天的梦    时间: 2014-2-13 19:28
标题: 问个TreeSet和HashSet的问题
TreeSet为什么能排序而HashSet不能,他俩之间还有什么区别?

作者: itpower    时间: 2014-2-13 20:08
TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值
HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实
作者: 奋斗的小胖子    时间: 2014-2-13 20:44
本帖最后由 奋斗的小胖子 于 2014-2-13 20:46 编辑

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



作者: 黄志成    时间: 2014-2-13 21:22
TreeSet会调用对象的compareTo方法进行排序,存入TreeSet的对象需要实现Compareble接口,然后覆盖campareTo方法。 比如String,所以String对象存入TreeSet后会自动排序。
HashSet也会对存入的对象排序,是根据对象的hash值来排序的,多以在我们看来是无序的。
作者: ↑↓ME→←    时间: 2014-2-13 21:33
TreeSet底层是二叉树,本身就有顺序,而HashSet底层是哈希表,无序的!




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