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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM何伟 中级黑马   /  2013-4-8 20:27  /  1448 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么TreeSet集合,重复的元素不被迭代.有哥们能说一下原理么???

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 liuyangyang 于 2013-4-8 20:41 编辑

你好,
TreeSet集合中不存在重复元素吧!他的底层数据结构是二叉树,保证了集合元素的唯一性;

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
Set以及Set的子类HashSet、TreeSet都不会有重复的元素的,这是集合的特点,保证元素的唯一性。
也就是说你在往里存元素的时候就不可能存进去重复的元素,那你用迭代器往出取的时候根本就不存在重复元素的现象

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
根据元素的hashCode方法和equals方法确定是否重复,即你要重写待存放对象的这两个方法。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 曹宇 于 2013-4-8 23:52 编辑
根据元素的hashCode方法和equals方法确定是否重复,即你要重写待存放对象的这两个方法。

是的  上面是说的 HashSet
TreeSet 通过实现接口Comparable或者实现Comparator比较器  方法实现排序,根据三种返回值 1 0  -1 来判断顺序  而返回0 则认为元素相同 就不会存入相同的元素


Set接口中的 HashSet和TreeSet 类 都不能存在重复的元素.在存入的时候就不会存入重复元素,输出的时候也就不会输出相同元素了!


上面写错了 应该是

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
HashSet集合保证元素唯一性的依据是通过hashCode()和equals()两个方法进行判断的,这两种先会判断hashCode是否相同,不同才会进行equals判断。
TreeSet集合底层数据结构是二叉树,保证其元素唯一的条件compareTo方法return 0; 通过实现接口Comparable或者实现Comparator比较器,可以自定义满足需求的排序方式。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
TreeSet添加元素的时候,调用compareTo或compare方法来定位元素的位置,也就是返回compareTo或compare返回0则认为是同一个位置的元素,即相同元素

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

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