我在项目中使用普通的旧HashSet实现。

我想这段代码

if (!collection.contains(someId)) {
   collection.add(someId)
   // do smth
}


可以轻松替换为以下代码

if (collection.add(someId)) {
   // do smth
}


没有任何副作用吗?我对吗?

最佳答案

对于HashSet(或任何Set实现),您是正确的,两个代码段都是等效的。

但是,对于任何Collection都不是这样(并且由于您的标题为Replace “contains” with “add” in collections,所以我认为值得一提)。例如,由于List允许重复,因此addtrue始终返回List。因此,您不能将contains替换为add

10-07 19:06
查看更多