2017-10-08 191 views
-2

当涉及到HashSet的方法添加时,我正面临一些问题。即使在阅读它的源代码here后,我也不太明白发生了什么。HashSet方法中的操作顺序add()

该方法到底做了什么?在调用hashCode和equals方面,它的操作顺序是什么?

回答

1

HashSet只是一个HashMap其中的值是一个Object
因此add只是将元素添加到支持hashmap。向hashmap添加元素意味着使用hashCode来确定它应该放在哪里。 equals用于确定我们试图添加的密钥是否已经存在,然后值应该更新

+0

*“其中值是布尔值”* - 错误 – Tom

+0

因此,假设对象我们试图添加到HashSet有一个特定的HashCode。但是,这个HashCode已经有了一个值“bucketed”。如果我们试图添加的新对象不等于(用equals()方法),那么先前的“bucketed”对象将替换为我们要添加的对象? –

+0

@PedroRibeiro研究帮助:[Java HashMap如何处理具有相同哈希代码的不同对象?](// stackoverflow.com/q/6493605) – Tom