黑马程序员技术交流社区

标题: set集合中的hashset和treeset有什么区别 [打印本页]

作者: woshixtdx    时间: 2015-4-5 11:17
标题: set集合中的hashset和treeset有什么区别
set集合中的hashset和treeset有什么区别,排序的区别

作者: kfcka    时间: 2015-4-5 18:50
HashSet存入的元素和取出元素是位置是不一样的,HashSet是存储方式是无序的,而且数据不能重复
TreeSet存入元素默认按字典顺序排列,元素也不能重复
如果是存入对象的话:
HashSet是通过复写HashCode和equals来判断对象是否重复。
TreeSet是通过实现Comparable接口内的compareTo方法或者自定义比较器实现Compartor接口的compare方法来判断对象是否重复。
作者: doomsday    时间: 2015-4-5 22:22
kfcka 发表于 2015-4-5 18:50
HashSet存入的元素和取出元素是位置是不一样的,HashSet是存储方式是无序的,而且数据不能重复
TreeSet存入 ...

集合存储的本来就是对象,也只能存储对象
作者: woshixtdx    时间: 2015-4-6 20:31
kfcka 发表于 2015-4-5 18:50
HashSet存入的元素和取出元素是位置是不一样的,HashSet是存储方式是无序的,而且数据不能重复
TreeSet存入 ...

谢谢大神啊,好人啊。
作者: 菜鸟小A    时间: 2015-4-6 21:16
HashSet底层数据结构是hash表
TreeSet底层数据结构是二叉树
作者: 天空的彩虹    时间: 2015-4-6 21:31
HashSet存入的元素和取出元素是位置是不一样的,HashSet是存储方式是无序的,而且数据不能重复
TreeSet存入元素默认按字典顺序排列,元素也不能重复
如果是存入对象的话:
HashSet是通过复写HashCode和equals来判断对象是否重复。
TreeSet是通过实现Comparable接口内的compareTo方法或者自定义比较器实现Compartor接口的compare方法来判断对象是否重复。
作者: leonard    时间: 2015-4-6 21:52
hashset和treeset都是set接口的实现子类,都具备set的特点,就是元素无序且唯一。
HashSet:不保证元素的迭代顺序。并且,不保证该顺序恒久不变。
TreeSet:根据构造方法的不用,选择使用自然排序或者比较器排序。按照实际的需求,可以对元素进行排序。并且保证唯一。

作者: hc5143    时间: 2015-4-6 21:58
hashSet这个是无序的。
treeSet这个是有序的。(记住自定义的对象要实现 Comparator接口 )
其他就没必要说了
作者: luoyu1530    时间: 2015-4-6 22:03
两个集合都是无序的(相对于存储和取出而言,存进去是一个顺序,取出来的又是一个顺序)
hashset的话,不能重复,没有顺序,treeset是取出来的时候,按照二叉树自然排序,没有重复




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