我有一个 CopyOnWriteArrayList 因为我的代码应该是线程安全的。 列表 friuts = new CopyOnWriteArrayList<>();
我不想在列表中有重复的水果,我不能使用 Set,因为我也想有插入顺序。我写了这段代码
public boolean add(String friut) {
synchronized (friuts) {
if (friuts.contains(friut)) {
return false;
}
friuts.add(friut);
}
return true;
}
据我所知,CopyOnWriteArrayList 已经并发了。因此,在同步块中添加 CopyOnWriteArrayList.add 对我来说似乎不是一个好主意。还有其他更好的解决办法吗?
使用
addIfAbsent()
方法:
public boolean add(String friut) {
friuts.addIfAbsent(friut);
}