这句话是什么意思?

Joh*_*nna 1 java collections set

我是Java的初学者,不明白if(!s.add(a))这段代码中的含义是什么:

Set<String> s = new HashSet<String>();
for(String a:args) {
    if(!s.add(a)) System.out.println("Duplicate detected:"+a);
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ers 10

addCollection接口中指定返回boolean指示添加是否成功的.来自Javadocs:

如果此集合因调用而更改,则返回true.(如果此集合不允许重复并且已包含指定的元素,则返回false.)

如果添加不成功,此代码将打印出一条消息,这在集合中存在重复时会发生.


Tim*_*han 6

如果集合已经有项目a,那么add方法将返回false.的!是一个"非"运​​算符,将该错误转化为真.因此,如果项目已经在集合中,您将看到println结果.