编辑的低延迟收集

时间:2017-01-27 03:33:28

标签: java collections

以下是这种情况 - 我需要在Java 7中维护一个ID(字符串)的集合(无界/单一编写器)。
随着新记录进入特定标志集(非物质) - 我试图插入。
如果我在集合中找到预先存在的记录 - 无论如何我都会提醒并覆盖 如果新记录未标记,我会尝试删除记录(如果存在) 性能要避免所有查找(2步) 插入/更新/删除尽可能接近O(1)。

HashSet会成为最适合的收藏吗?

1 个答案:

答案 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());
    }
}