java - 当我将重复元素添加到 HashSet 时会发生什么?旧元素是否被覆盖?

标签 java duplicates add hashset

假设我想在 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/

相关文章:

java - 使用 jdbc 时出错

java - 在java上打开与一台服务器的两个端口连接

r - 使用 NA 在数据帧的行中填充特定的重复值

Python)我想添加两个 len 顺序不同的列表

c - 为树添加值

java - 将排序后的数字字符串添加到 Java 中的 SortedSet 的问题

Java:如何在没有主线访问的情况下确定启动参数?

java - 理解 concurrentHashMap

java - 识别同一调用堆栈中的重复调用 - java

mysql - 基于 2 列的重复行的 SQL 查询