如何使用给定值的字段检查是否存在值?然后换个新的?在ConcurrentHashMap中,因为我有N个线程。
这是我想要的一个例子。然而,它并不是线程安全的。
Map<Integer, Record> map = new ConcurrentHashMap<>();
// it works, but I think it's unsafe
int get(Object key) {
for (Map.Entry<Integer, Record> next : map.entrySet()) {
if (next.getValue().a == key) {
return next.getValue().b;
}
}
int code = ...newCode();
map.put(code, new Record(...))
return code;
}
record Record(Object a, int b) {
}发布于 2022-11-07 23:09:08
您所建议的将不会达到使用HashMap的目的,因为您正在迭代地图,而不是从地图中检索。
您真正应该做的是创建一个新的Map,其中记录.a中的字段是键,Record.B中的字段是值(或者仅仅是整个记录)。然后,只需更新您的逻辑,将其插入到两个地图中。
https://stackoverflow.com/questions/74350363
复制相似问题