关于hashCode

关于hashCode与equals()方法

如果equals想等,则hashCode也要相同。

但是hashCode相同,equasl不一定为ture;

如果重写equals方法,则要重写hashCode,来确保这个契约确保了在哈希集合中相等的对象具有相同的散列码。

不等的对象:即使两个对象的 hashCode 相同,它们不一定通过 equals 方法比较相等,因为不同对象可以有相同的哈希值(哈希冲突)。


关于==与常量池

如果创建了俩个不同的对象,虽然对象在不同的内存地址中,

但是指向了相同的常量池中,则俩个对象的引用相同,==也会变为true;

image-20240818155051058

image-20240818155059687

如果我把注释打开则会

image-20240818155127013

因为指向了相同地址。


哈希冲突怎么解决

回到正题

链地址法:使用链表或其他数据结构来解决冲突,适合插入和删除操作频繁的情况。

开放地址法:通过探测下一个可用位置解决冲突,常用于简单实现。

再哈希:在负载因子达到一定值时扩大哈希表的大小,并重新分配元素。

我没用过先记着就行,等用到了文章会更新的。