求助:HashSet 包含某Object=true,但是remove该Object就报错。Object RecordNumber重写了toString hashCode equals 方法。估计是这里有问题,请教各位大侠。
import java.text.ParseException;
import java.util.Date;
//数据源 表名 时间 (记录数量)
public class RecordNumber {
public final static int CSUDF_SYS_CELL_HOUR_G = (int) 0;
public final static int CSUDF_SYS_RTF_HOUR_G = (int) 1;
public final static int CSUDF_SYS_GPROC_HOUR_G = (int) 2;
private String OMC;
private String TableName;
private Date DateTime;
public RecordNumber(String DataSource, String TableName, Date DateTime) {
this.OMC = DataSource;
this.TableName = TableName;
this.DateTime = DateTime;
}
public String getOMC() {
return this.OMC;
}
public String getTableName() {
return this.TableName;
}
public Date getDateTime() {
return this.DateTime;
}
public int getTableNameInt() {
int x = 1000;
if (TableName.equals("CSUDF_SYS_CELL_HOUR_G")) {
x = (int) CSUDF_SYS_CELL_HOUR_G;
}
if (TableName.equals("CSUDF_SYS_RTF_HOUR_G")) {
x = CSUDF_SYS_RTF_HOUR_G;
}
if (TableName.equals("CSUDF_SYS_GPROC_HOUR_G")) {
x = CSUDF_SYS_GPROC_HOUR_G;
}
return x;
}
@Override
public String toString() {
return (this.OMC + "," + this.TableName + "," + this.DateTime);
}
@Override
public boolean equals(Object o) {
return (o instanceof RecordNumber)
&& toString().equals(((RecordNumber) o).toString());
}
@Override
public int hashCode() {
int hash = 7;
hash = 37 * hash + (this.OMC != null ? this.OMC.hashCode() : 0);
hash = 37 * hash + (this.TableName != null ? this.TableName.hashCode() : 0);
hash = 37 * hash + (this.DateTime != null ? this.DateTime.hashCode() : 0);
return hash;
}
//单元测试
public static void main(String[] args) throws ParseException {
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm");
RecordNumber rn = new RecordNumber("OMCSP9", "CSUDF_SYS_CELL_HOUR_G", df.parse("2010-10-26 07:00"));
java.util.Set<RecordNumber> testSet = new java.util.LinkedHashSet<RecordNumber>();
testSet.add(rn);
rn = new RecordNumber("OMCSP1", "CSUDF_SYS_CELL_HOUR_G", df.parse("2010-10-26 07:00"));
testSet.add(rn);
rn = new RecordNumber("OMCSP11", "CSUDF_SYS_CELL_HOUR_G", df.parse("2010-10-26 07:00"));
testSet.add(rn);
System.out.println(testSet.size());
for (RecordNumber x : testSet) {
System.out.println(x);
System.out.println("testSet包含该RecordNumber:" + testSet.contains(x));
testSet.remove(x);
System.out.println(testSet.size());
}
}
}
run:
3
OMCSP9,CSUDF_SYS_CELL_HOUR_G,Tue Oct 26 07:00:00 CST 2010
testSet包含该RecordNumber:true
2
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:373)
at java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:384)
at datatransfer.RecordNumber.main(RecordNumber.java:79)
Java Result: 1
成功生成(总时间:0 秒)
分享到:
相关推荐
HashSet的实现原理 ,HashSet与HashMap的区别 以及 HashSet的底层实现方式
简述了HashSet去重原理
对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
hashSet底层去重原理
这个是关于java语言的hashset集合类的一些基本用法和详解了个方法的使用
1:contains判断去重(有序) 此方法的优点的:理解起来比较简单,并且最终得到的集合也是有序的,这里的有序指的是新集合的排列顺序和原集合的顺序是一致的;但缺点是实现代码有点多,不够简洁优雅。 2:迭代器去重...
java 利用HashSet删除学生 java 利用HashSet删除学生
treemap treeset hashset hashmap 简要介绍
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。
HashSet 是一个没有重复元素的集合。 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。 HashSet是非同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它...
20220424-笔记-HashSet扩容机制
Qt4.8.5 Bug Patch File
自己写的例子,关于HashSet遍历和HashMap遍历的. 感谢大家参考
源码分析见我博文:http://blog.csdn.net/wabiaozia/article/details/50684556
c++一个用vector实现java的HashSet集合类,可以将任何类,数字,字符串,vector等等存放到里面
HashSet 是 Java 中的一个集合类,它实现了 Set 接口并提供了基于哈希表的无序、不重复元素的集合。具体来说,它是通过哈希表(实际上是一个 HashMap 实例)来存储元素的。 以下是 HashSet 的一些主要特点: 无序...
随机数,HsahSet,排序,输出.随机数,HsahSet,排序,输出.
HashSetHashSetHashSetHashSetHashSetHashSetHashSetHashSetHashSet
已设置JavaScript中的简单哈希集创建一个新的HashSet var HashSet = require ( 'hashset' ) ;//Create an empty hash setvar hashset = new HashSet ( ) ;//Create a hash set an initialize it with a value 'a'var...