java.util.Collection和重复元素

时间:2013-10-25 05:46:47

标签: java collections

来自 Java Doc

  

布尔加法(E e)

     

确保此集合包含指定的元素(可选)   操作)。如果此集合因此而更改,则返回 true   呼叫。 (如果此集合不允许重复,则返回 false   已包含指定的元素。)

它只说“如果此集合不允许重复,则返回false”。它没有解释是否忽略元素或替换它。根据这个短语“如果这个集合由于调用”而改变,则返回true,我假设这个方法返回false时,意味着Collection忽略了元素而没有元素是更换后,该系列保持原样。这是对的吗?

如果是重复元素,java.util.Collection实现不允许重复的类的操作是什么?它总是被忽略,或者总是被替换,还是取决于实现?

4 个答案:

答案 0 :(得分:4)

因为它在修改集合时返回true,返回false意味着它没有修改集合,即它没有替换元素。

答案 1 :(得分:0)

这是正确的。

如果您尝试添加重复项,则不允许重复的集合将返回false。什么都没有被修改,它只会被忽略。

如果您正在编写一个集合的实现,理论将是这样的:

检查该集合是否已包含它。 如果是,则返回false。 否则,添加要设置的元素,返回true。

答案 2 :(得分:0)

文档可能没有涉及的问题是“收藏是否可以快速检测重复并存储它们?”。答案是肯定的,一个例子可以是番石榴中的Multiset,其中所有重复项都被计算在内,Collection.add(obj)总是返回true

答案 3 :(得分:0)

具体实现清楚地解释了它,例如HashSet.add说“如果这个集合已经包含了元素,那么调用会保持集合不变并返回false”