集合框架中的 equals() 与 hashCode(),分析了 HashSet 和 HashMap 的存储机制。向 HashSet 添加对象时,先调用 hashCode() 计算存储位置,若该位置无元素则直接存入;若有元素,再用 equals() 判断是否相同。
自定义类没有重写这两个方法,导致明明逻辑上相同的两个对象被当作不同元素存入 Set,造成重复。重写后注意保持一致性——equals() 相等时 hashCode() 必须相等,否则元素将无法被正确查找或删除。
通过调试 HashMap 的 put 和 get 源码,理解了哈希冲突时的链表与红黑树转换。
