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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 liuelxiwd 于 2013-5-8 10:05 编辑

如题~~~~~~~~~~~~~~~~~

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 新人鼓励

查看全部评分

4 个回复

倒序浏览
TreeSet是一个有序集合,里面的元素若要实现自然排序就需要实现Comparable接口,或者你也可以自定义一个Comparator实现自己的比较方式。TreeSet底层是一棵自平衡的排序二叉树。
HashSet的底层实现是哈希散列表。HashSet中的数据是无序的,可以放入null,但只能放入一个null,HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例。

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
先说HashSet
HashSet集合的底层结构是一个哈希表数据结构 ,无序(存进去和取出来的顺序是不一致的),不可以存入重复的元素,  存入HashSet集合的元素(对象)需要覆盖hashCode()方法和equals()方法。
HashSet是如何保证元素的唯一性的呢?
是通过元素的两个方法 hashCode() 和equals() 方法。
如果元素的hashCode()相同,才会判断equals是否为true;
如果元素的hashCode()不同,直接存入到HashSet集合,则不会调用equals方法。

HashSet对于判断元素是否存在,以及删除等操作,依赖的是也是hashCode和equals方法。

再说TreeSet:
TreeSet底层的数据结构是二叉树数据结构  不可有重复元素,  TreeSet集合取出是有序的 ,之所以有序是因为TreeSet有两种排序方式。

TreeSet排序的第一种方式:让存入TreeSeet集合的元素自身具备比较性。
元素需要实现Comparable接口,覆盖CompareTo方法。
这种方式也称为元素的自然顺序。或者叫做默认顺序。

ThreeSet的第二种排序方式。
当元素自然不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
定义一个比较器类  将比较器对象作为参数传递给TreeSet集合的构造函数。

当两种排序方式都存在时 ,以比较器方式为主。
定义一个类,实现Comparator接口 覆盖compare方法。

完毕

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 赞一个!

查看全部评分

回复 使用道具 举报
能不能把标题改下,错字也太多了吧
回复 使用道具 举报
问题解决就改为再次编辑已解决,不行你再问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马