-2
当涉及到HashSet的方法添加时,我正面临一些问题。即使在阅读它的源代码here后,我也不太明白发生了什么。HashSet方法中的操作顺序add()
该方法到底做了什么?在调用hashCode和equals方面,它的操作顺序是什么?
当涉及到HashSet的方法添加时,我正面临一些问题。即使在阅读它的源代码here后,我也不太明白发生了什么。HashSet方法中的操作顺序add()
该方法到底做了什么?在调用hashCode和equals方面,它的操作顺序是什么?
HashSet
只是一个HashMap
其中的值是一个Object
。
因此add
只是将元素添加到支持hashmap。向hashmap添加元素意味着使用hashCode来确定它应该放在哪里。 equals
用于确定我们试图添加的密钥是否已经存在,然后值应该更新
*“其中值是布尔值”* - 错误 – Tom
因此,假设对象我们试图添加到HashSet有一个特定的HashCode。但是,这个HashCode已经有了一个值“bucketed”。如果我们试图添加的新对象不等于(用equals()方法),那么先前的“bucketed”对象将替换为我们要添加的对象? –
@PedroRibeiro研究帮助:[Java HashMap如何处理具有相同哈希代码的不同对象?](// stackoverflow.com/q/6493605) – Tom