社区
Java SE
帖子详情
TreeSet中为什么就允许有重复的记录?
jerryqd
2009-04-01 06:25:54
TreeSet中为什么就允许有重复的记录?
在HashSet中不能有重复记录,但是TreeSet就可以。它只要求放在其中的对象实现comparable接口。但不要求覆盖equals,hashCode方法。就算你覆盖了也没有用。
也就是说TreeSet不会调用equals,hashCode去比较元素是不是重复的。
...全文
514
12
打赏
收藏
TreeSet中为什么就允许有重复的记录?
TreeSet中为什么就允许有重复的记录? 在HashSet中不能有重复记录,但是TreeSet就可以。它只要求放在其中的对象实现comparable接口。但不要求覆盖equals,hashCode方法。就算你覆盖了也没有用。 也就是说TreeSet不会调用equals,hashCode去比较元素是不是重复的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
renhuihhh
2011-02-23
打赏
举报
回复
1楼说的 即是
安卓机器人
2011-02-23
打赏
举报
回复
详见JAVA API文档
mark2you
2011-02-22
打赏
举报
回复
我也遇到了TreeSet出现了重复的元素
代码如下:
Comparator<char[]> comparator = new Comparator<char[]>() {
@Override
public int compare(char[] o1, char[] o2) {
// TODO Auto-generated method stub
if( Arrays.equals(o1, o2) ){
return 0;
}
else
return 1;
}
};
TreeSet<char[]> setOfTelNumber = new TreeSet<char[]>(comparator);
在插入之后,有些重复还是会出现~想不明白为什么
zhangpeixv
2009-04-08
打赏
举报
回复
[Quote=引用 8 楼 gzwlj 的回复:]
有个优先级的问题,如果你实现comparable接口,程序会根据你实现的comparable的方法进行判断是否重复。
如果没有实现comparable接口,则按照hashCode()和equals()方法判断是否重复。
所以楼主可以试一下把comparable接口删除,再去覆盖hashCode()和equals()就会看到效果了。
[/Quote]
而且覆盖的时候条件一定是唯一的,可以确保没有重复记录
LZ还可以看看它的源码具体是怎么实现的也许会有帮助
gzwlj
2009-04-07
打赏
举报
回复
有个优先级的问题,如果你实现comparable接口,程序会根据你实现的comparable的方法进行判断是否重复。
如果没有实现comparable接口,则按照hashCode()和equals()方法判断是否重复。
所以楼主可以试一下把comparable接口删除,再去覆盖hashCode()和equals()就会看到效果了。
gloomyfish
2009-04-07
打赏
举报
回复
要你自己完成equal() method 在你自己定义的类中,然后才能放到TreeSet里面
铁匠梁老师
2009-04-06
打赏
举报
回复
4楼正解
挨踢民工_0917
2009-04-06
打赏
举报
回复
set 是不容许有重复元素的
热烈的红颜
2009-04-06
打赏
举报
回复
TreeSet不允许重复记录的啊 但是 元素是有序的
HashSet是无顺序的
List 有索引index所以 可以允许重复
Set 是不允许有重复的
List 实现的子类 ArrayList AbstractList Vector(线程安全的)
Set 的实现子类 TreeSet HashSet
Map
子类:HashMap Hashtable
HashTable 允许空的key 但是 HashMap不允许
lovetysx
2009-04-06
打赏
举报
回复
set是不允许有重复的,把代码铁出来看看
wenzheng38
2009-04-05
打赏
举报
回复
TreeSet好像不允许有重复的记录吧
LinkedList允许有个重复的记录
临远
2009-04-04
打赏
举报
回复
要求覆盖equals和hashCode(),你没覆盖它就没法检测object是否重复
Java集合框架精讲
该课程内容包括:Collection集合的继承体系、Map集合的集合体系、部分数据结构知识点、List、Set、ArrayList、Vector、LinkedList、Iterator(迭代器)、
TreeSet
、HashSet、LinkedHashSet、
TreeSet
、Map、TreeMap、...
Java用List,hashSet或者
TreeSet
实现数组去除
重复
数据并排序
Java用List,hashSet或者
TreeSet
实现数组去除
重复
数据并排序
Set是如何保证元素不
重复
的
顾名思义,BitSet是位集合,通常来说,位集合的底层的数据结构是一个bit数组,如果第n位为1,则表明数字n在该数组
中
。举个例子,如果调用BitSet#set(10),业务语意是把10放到BitSet
中
,内部的操作则是通过把二进制的...
Java HashSet与
TreeSet
总结
HashSet 基于 HashMap 来实现的,是一个不
允许
有
重复
元素的集合。 HashSet
允许
有 null 值。 HashSet 是无序的,即不会
记录
插入的顺序。 HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果...
hashset
treeset
java_Java Set集合:HashSet和
TreeSet
类
Set 集合类似于一个罐子,程序可以依次把多个...Set 集合
中
不能包含
重复
的对象,并且最多只
允许
包含一个 null 元素。Set 实现了 Collection 接口,它主要有两个常用的实现类:HashSet 类和
TreeSet
类。HashSet 类Has...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章