【发布时间】:2013-05-24 10:30:30
【问题描述】:
我是 Java 新手,不知道 java 集合实现之间的区别。
我必须处理多达 100K 的导入数据记录。该列表中可能有重复项。我必须把所有这些都放到数据库中。在导入之前我清理了数据库表,所以一开始在 DB 中没有重复。
使用休眠模式批量插入数据。 我想做这样的事情:
SomeCollectionClass<Integer> alreadyInsertedRecords;
//...
if (!alreadyInsertedRecords.contains(currentRecord.hashCode()) {
save_to_database(currentRecord);
alreadyInsertedRecords.put(currentRecord.hashCode());
} else {
logger.log("Record no 1234 is a duplicate, skipping");
}
我应该使用哪个集合类来检查记录是否已插入到数据库中?
正如我所说,可能有超过 100 000 条记录,因此集合应该快速搜索、快速插入并且内存占用少。
【问题讨论】:
-
planetjones 说了什么。此外,您应该只使用
hashCode(),前提是它保证每个对象都不同。否则,您可能会在contains()得到一些误报。 -
@Pescis:这是完全错误的。阅读HashSet、equals和hashCode的javadoc。
-
HashSet 比 TreeSet 快吗?
-
@SWilk 测试你就知道了。
标签: java performance collections tree