TreeSet中为什么就允许有重复的记录?

问题描述

TreeSet中为什么就允许有重复的记录?在HashSet中不能有重复记录,但是TreeSet就可以。它只要求放在其中的对象实现comparable接口。但不要求覆盖equals,hashCode方法。就算你覆盖了也没有用。也就是说TreeSet不会调用equals,hashCode去比较元素是不是重复的。

解决方案

解决方案二:
要求覆盖equals和hashCode(),你没覆盖它就没法检测object是否重复
解决方案三:
TreeSet好像不允许有重复的记录吧LinkedList允许有个重复的记录
解决方案四:
set是不允许有重复的,把代码铁出来看看
解决方案五:
TreeSet不允许重复记录的啊但是元素是有序的HashSet是无顺序的List有索引index所以可以允许重复Set是不允许有重复的List实现的子类ArrayListAbstractListVector(线程安全的)Set的实现子类TreeSetHashSetMap子类:HashMapHashtableHashTable允许空的key但是HashMap不允许
解决方案六:
set是不容许有重复元素的
解决方案七:
4楼正解
解决方案八:
要你自己完成equal()method在你自己定义的类中,然后才能放到TreeSet里面
解决方案九:
有个优先级的问题,如果你实现comparable接口,程序会根据你实现的comparable的方法进行判断是否重复。如果没有实现comparable接口,则按照hashCode()和equals()方法判断是否重复。所以楼主可以试一下把comparable接口删除,再去覆盖hashCode()和equals()就会看到效果了。
解决方案十:
引用8楼gzwlj的回复:

有个优先级的问题,如果你实现comparable接口,程序会根据你实现的comparable的方法进行判断是否重复。如果没有实现comparable接口,则按照hashCode()和equals()方法判断是否重复。所以楼主可以试一下把comparable接口删除,再去覆盖hashCode()和equals()就会看到效果了。

而且覆盖的时候条件一定是唯一的,可以确保没有重复记录LZ还可以看看它的源码具体是怎么实现的也许会有帮助
解决方案十一:
我也遇到了TreeSet出现了重复的元素代码如下:Comparator<char[]>comparator=newComparator<char[]>(){@Overridepublicintcompare(char[]o1,char[]o2){//TODOAuto-generatedmethodstubif(Arrays.equals(o1,o2)){return0;}elsereturn1;}};TreeSet<char[]>setOfTelNumber=newTreeSet<char[]>(comparator);在插入之后,有些重复还是会出现~想不明白为什么
解决方案十二:
详见JAVA API文档
解决方案十三:
1楼说的即是

时间: 2024-11-01 22:50:58

TreeSet中为什么就允许有重复的记录?的相关文章

sqlserver中distinct的用法(不重复的记录)_MsSql

下面先来看看例子: table表 字段1     字段2   id        name   1           a   2           b   3           c   4           c   5           b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须 使用distinct去掉多余的重复记录. select distinct name from table得到的结果是:  --

sqlserver中distinct的用法(不重复的记录)

下面先来看看例子: table表 字段1     字段2   id        name   1           a   2           b   3           c   4           c   5           b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须 使用distinct去掉多余的重复记录. select distinct name from table得到的结果是: ---

如何查找、删除表中重复的记录

重复 如何查找.删除表中重复的记录软件环境: 1.Windows NT4.0+ORACLE 8.0.42.ORACLE安装路径为:C:\ORANT问题提出: 1.当我们想要为一个表创建唯一索引时,如果该表有重复的记录,则无法创建成功. 方法原理: 1.Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的, rowid确定了每条记录是在ORACLE中的哪一个数据文件.块.行上. 2.在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中 那

php从数组中随机选择若干不重复元素的方法

 本文实例讲述了php从数组中随机选择若干不重复元素的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <?php /*  * $array = the array to be filtered  * $total = the maximum number of items to return  * $unique = whether or not to remove duplicates before getting a random list  */ function uniq

excel如何设置在一列中提示输入特定的重复数据?

  excel如何设置在一列中提示输入特定的重复数据?我们在使用excel的时候,往往需要进行对一列的数据进行设置,不让输入特定重复的数据,下面简单介绍下如何做到,一起来看看吧! 打开excel程序界面,进入主界面,输入数据 然后选中要该列的数据,点击工具栏上的数据选项卡 在数据选项界面中,点击数据有效性按钮选项 在弹出的数据有效性的界面中,点击有效性条件下拉框选项,点击"自定义"选项 在公式这一栏中输入=COUNTIF($A$1:$A$15,$A$1)=1,就是单元A列中1到15行,

Win7下wps表格中禁止单元格输入重复数值的设置方法

  Wps是一款办公软件,一些用户需要经常使用wps制作一些数据资料,比如学号.员工编号等,而这些数据都有着不能重复的特点,那么要如何禁止在wps的表格中输入重复数值呢?其实只要简单设置一下就可以了,下面跟大家带来Win7下在wps表格中禁止单元格输入重复数值的设置方法如下. 1.首先我们打开win7系统下WPS软件表格软件,并新建一个表格.   2.选中需要输入数值的行或列,在此小编以选择B列为例进行讲解.大家可以根据自己的表格输入的需要进行选择.   3.选择后点击"重复项";  

dictionary-link中Dictionar能不能使用重复的key?如果要重复Key那怎么实现?

问题描述 link中Dictionar能不能使用重复的key?如果要重复Key那怎么实现? link中Dictionar能不能使用重复的key?如果要重复Key那怎么实现? 解决方案 看你要做什么,如果是需要对Value分组,可以用Dictionary<TKey, List<TValue>>,如果你只是需要key-value配对,可以用List<KeyValuePair<TKey, TValue>> KeyValuePair是可以单独使用的 解决方案二: 不

c++-C++中namespace的变量提示重复定义,为什么。

问题描述 C++中namespace的变量提示重复定义,为什么. 有三个文件:sale.h, sale.cpp, main.cpp sale.h中定义namespace SALES { int test; void func(void); } sale.cpp中接着完成namespace的函数定义 namespace SALES { void func(void) { ***** } } main.cpp的main函数之外,定义int test 编译结果是:编译器指示在sale.cpp中SALE

link中如何产生连续不重复的guid,如何重写 guid?

问题描述 link中如何产生连续不重复的guid,如何重写 guid? link中如何产生连续不重复的guid,如何重写 guid? 解决方案 guid的原理就是充分地随机避免重复,你产生连续的guid,如果多个程序运行,岂不是还是可能重复?