向HashSet 中add ()元素時(shí),判斷元素是否存在的依據(jù),不僅要比較hash值,同時(shí)還要結(jié)合equles 方法比較。
HashSet 中的add ()方法會(huì)使用HashMap 的put()方法。
HashMap 的 key 是唯一的,由源碼可以看出 HashSet 添加進(jìn)去的值就是作為HashMap 的key,并且在HashMap中如果K/V相同時(shí),會(huì)用新的V覆蓋掉舊的V,然后返回舊的V。所以不會(huì)重復(fù)( HashMap 比較key是否相等是先比較hashcode 再比較equals )。
以下是HashSet 部分源碼: