Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 替换“;包括「;加上;加上「;收藏?_Java_Collections - Fatal编程技术网

Java 替换“;包括「;加上;加上「;收藏?

Java 替换“;包括「;加上;加上「;收藏?,java,collections,Java,Collections,我在我的项目中使用的是纯旧的HashSet实现 我想这个代码 if (!collection.contains(someId)) { collection.add(someId) // do smth } 可以很容易地替换为以下代码 if (collection.add(someId)) { // do smth } 没有任何副作用?我说得对吗?对于HashMap,它用新值替换旧值 对于HashSet,该项不会被插入。正确,这将很好地工作。对于HashSet(或任何集实现)

我在我的项目中使用的是纯旧的
HashSet
实现

我想这个代码

if (!collection.contains(someId)) {
   collection.add(someId)
   // do smth
}
可以很容易地替换为以下代码

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

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

对于HashMap,它用新值替换旧值


对于HashSet,该项不会被插入。

正确,这将很好地工作。

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

然而,这对于任何
收藏都是不正确的(因为你的标题是
在收藏中用“add”替换“contains”,我认为这是值得一提的)。例如,
List
add
总是返回
true
,因为
List
允许重复。因此,您不能将
包含的
替换为
添加

大是

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


这将适用于
Set
实现,没有问题,因为它们不允许重复值,但不适用于
List
实现,因为它们允许重复项。

如果您想知道该项以前存在,它很重要,否则不重要