HashMap 一个有趣的bug

前言

 如题 公司除了我还有一个实习生 他重写了hashcode()导致公司权限有时显示有问题

由于测试也不好复现,我还以为是什么抽风bug,两天才解决 简单来说是Hashmap 允许key为null 会把null hashcode 设为0 来存下来 导致了hash冲突 属实不好定位

示例

简单复现就把 id为0的情况 hahshcode为0 

运行结果

由此可见 hashcode 为0 和null 确实是共用一个槽位

源码解析

如果不为null 是会调用key的hashcode 方法

总结

对于hashmap null和hashcode 为0 会共用一个槽位 要注意覆写问题

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值