以下是这种情况 - 我需要在Java 7中维护一个ID(字符串)的集合(无界/单一编写器)。
随着新记录进入特定标志集(非物质) - 我试图插入。
如果我在集合中找到预先存在的记录 - 无论如何我都会提醒并覆盖
如果新记录未标记,我会尝试删除记录(如果存在)
性能要避免所有查找(2步)
插入/更新/删除尽可能接近O(1)。
HashSet会成为最适合的收藏吗?
答案 0 :(得分:0)
如果您的代码是单线程的,HashSet
应该是一个很好的匹配。示例实施:
Set<String> ids = new HashSet<>();
void processRecord(Record record) {
if (record.hasFlag()) {
if (!ids.add(record.getId())) {
alertDuplicate(record);
}
} else {
ids.remove(record.getId());
}
}