equals與hashcode
hashset為什麼能保證元素唯一
底層是hashmap key不允許重複
關於equals方法
public boolean equals(Object obj) { return (this == obj); }
此方法沒有任何意義,一般比較的是邏輯上的相等,所以一般重寫
關於hashcode方法
@Override public int hashCode() { return 10;}
此方法會造成hash碰撞,所以一般重寫
關聯
在重寫equals()後,一定要重寫hashCode()方法
原因:
當把引用型別當做key的時候,明明相等的兩個東西,卻取不出來
衝突怎麼辦
產生衝突怎麼辦呢?產生衝突之後,不同的物件在散列表中找到了相同的位置,為了解決這個問題,我們將這個槽中的內容設計成一個連結串列,當產生衝突的時候,就將新的元素放到連結串列中