前言
如题 公司除了我还有一个实习生 他重写了hashcode()导致公司权限有时显示有问题
由于测试也不好复现,我还以为是什么抽风bug,两天才解决 简单来说是Hashmap 允许key为null 会把null hashcode 设为0 来存下来 导致了hash冲突 属实不好定位
示例
简单复现就把 id为0的情况 hahshcode为0
运行结果
由此可见 hashcode 为0 和null 确实是共用一个槽位
源码解析
![](https://i-blog.csdnimg.cn/direct/dd81199ad1754462b9ab1c1b629e1ae8.png)
![](https://i-blog.csdnimg.cn/direct/d5b43bb93fd14448ab827c4f2b109775.png)
如果不为null 是会调用key的hashcode 方法
总结
对于hashmap null和hashcode 为0 会共用一个槽位 要注意覆写问题