假设我想在 HashSet
中添加重复元素。我们知道这是不允许的。所以我遇到了 2 个,比方说理论。
在此 link 的“属性,编号 2”下,它说:
HashSet does not allow duplicate elements. If you try to insert a duplicate element, older element will be overwritten
但是当我检查在 IDE 中提供给我的文档时,在方法 add()
中,它指出:
* If this set already contains the element, the call leaves the set * unchanged and returns {@code false}.
那么它是覆盖(替换)旧元素还是保持集合不变并返回 false? :) 我对他们说的恰恰相反感到疯狂吗?
最佳答案
IDE 正在显示 Set.add
方法的官方规范(javadocs)的摘录。
IDE 是正确的。相信官方文档,而不是一些“漂亮”的网站。
But how could people that made that site make such a big mistake then?
永远记住,像您发现的网站这样的网站的主要动机是通过您的页面浏览量赚钱。他们通常更关注“搜索引擎优化”,而不是 Material 的质量。
But the problem is those "random" sites sometimes make 'prettier' explanation of some concepts. Official docs are sometimes too hard to follow for me as a beginner.
那么哪个更好呢?一些容易阅读但错误的东西?还是准确的东西?
在这种情况下,你不能说官方文档难懂。您自己能够看到从官方文档和第 3 方网站获取的文本之间的矛盾。
我建议我们始终尝试先阅读官方 javadoc,并且始终相信它优于任何其他来源......包括 StackOverflow 答案!唯一更权威的东西 1是OpenJDK源码。
1 - 即使这样也值得商榷。一方面,代码决定了实际发生了什么。另一方面,代码可能会从一个版本更改为另一个版本。因此,依赖 javadoc 中未指定的行为可能会导致可移植性问题。
关于java - 当我将重复元素添加到 HashSet 时会发生什么?旧元素是否被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64174058/