关于HashSet添加数据在table表中位置的问题,以及对象的hash值计算是按地址值计算吗的问题
6月10号在Java交流频道请教了一个问题,感谢@库米豪斯巴达锅铲祖师 和@HD Superman 的回复.
这里详细把问题描述一下,希望能够讨论一下.
1. 运行情况
1.1 代码
ja
搜索了一下,https://cloud.tencent.com/developer/article/1622192。
这个时候看文档/源码比较好,你可以按照文中的方法看你下你使用的 Java 中是如何实现的。
3.2 的问题很简单啊,既然它是哈希计算的,那么任何东西都可能映射到同一个位置吧。
a 和 b 在哈希表的同一个位置不代表它们的哈希值一样,只能说明它们的哈希值会映射到同一个位置,这个和映射算法以及 set 内部桶的数量都是有关系的。
哈希表中的位置是上面红框的if语句确定的吗?我的理解,如果hash值不同,那应该在哈希表中的位置也肯定不同啊?
而且为甚什么我增加了一个断点,第二个dog对象就跑到lucy下面去了,不增加这个断点就跟lucy没关系?