关于HashSet添加数据在table表中位置的问题,以及对象的hash值计算是按地址值计算吗的问题
6月10号在Java交流频道请教了一个问题,感谢@库米豪斯巴达锅铲祖师 和@HD Superman 的回复.
这里详细把问题描述一下,希望能够讨论一下.
1. 运行情况
1.1 代码
ja
为什么两个dog对象在没有重写hashCode方法的时候在table表中计算的位置不一样?
因为所有的 Java 对象默认继承 java.lang.Object,Object 的 hashcode 方法返回对象地址,hashCode() 不一样所以计算的位置不一样,Object 的 equals 也是比较地址
重写了toString方法后是按toString转化后的字符串计算吗?
hashCode 跟 toString 方法无关
为什么会出现第二个dog对象和lucy在同一个位置的情况?
毕竟只有 16 个桶,很容易就取余到同一个位置了