HashMap为什么不能用基本数据类型作值。

    我们知道,hashmap底层是通过数组和链表的形式来进行实现存储(JDK 1.8加入了红黑树,进一步加快我们的查找速率)。

  当我们存储对象的时候,通过hashcode()方法计算出我们的hash值【为了避免hash冲突,这里还有很多优化算法: 例如:将计算出来的hash值与我们底层数组长度减一进行位运算】,将其存放到指定的hasa值位置上,如果此时若该位置没有其他元素,直接存储。(此时只用到了hashcode);有可能hash冲突,不同对象计算出来的hashcode是相同的,我们需要用到equals进行比较若相等就将我们的数据进行更新,若不相等就将以链表的形式进行存储,如果不相等就将以链表的形式存储。

  所以看到这里我们一目了然了,我们的最基本数据类型是没有equals()方法的,所以只能用引用类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值