HashMap简单理解

  HashMap是一个常用的Map集合,它的底层是数组和链表的结合。

  HashMap是非线程安全的,允许有一个key值为空,多个value值为null。

  当我们向HashMap中put元素的时候,会首先根据元素的key值的hashcode计算hash值,然后根据hash值确定元素在数组中的位置,如果该位置上已经存在元素,就会以链表的形式储存该元素,新加入的元素在链头,先加入的元素在链尾。如果该位置没有元素,就在该位置储存该元素。

  当程序试图将一个key-value对放入HashMap中是,会首先根据key的hashcode计算hash值,如果两个Entry的key的hash值计算后相同,那么这两个Entry的储存位置相同。如果两个Entry的key值通过equals比较返回true,那么新Entry的value将会覆盖之前Entry的value值,key值不会覆盖。如果两个Entry的key值通过equals比较返回false,新添加的Entry与原有的Entry就会形成链表结构,新添加的Entry在链头,最先添加的在链尾。

  适合做HashMap集合的key值得前提条件是这个值是否会发生改变。String值是不会发生改变的,因此String能做key值,包括Integer这样的包装类。如果自定义对象属性不可变,那么它就满足了作为key值得条件,所以当自定义对象不可变时也可以作为HashMap的key值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值