Java—HashMap相关知识

前言

        知识点有点整理不下来,这边贴两个我觉得不错的链接,一个是b站的学习视频,其课件将相关知识叙述的很清楚。还有个是一篇不错的博客。
https://www.bilibili.com/video/BV1nJ411J7AA?from=search&seid=6046556222621910889

https://www.cnblogs.com/chengxiao/p/6059914.html
(个人觉得,在关于数组长度为什么必须是2的n次方,以及jdk1.8新特性的讲解上,视频课件更为优秀)

        然后关于ConcurrentHashMap:
https://www.cnblogs.com/chengxiao/p/6842045.html

        然后我自己写了几个知识点,免得我以后忘记了。

1. HashMap的工作原理

        HashMap是基于哈希法的原理,使用put()函数将键值对存储到HashMap中,使用get()函数从HashMap中获取对象。在调用put()方法时,会先对键调用HashCode()方法,返回的HashCode()用于找到桶的位置来存储Entry( [ˈentri])对象
(注意,HashMap是在bucket(桶)中存储键对象和值对象,并不是仅仅在bucket中存储值。一定不要漏了对象这两个字)

2. 关于Hash冲突

        当两个元素的key计算而来的hash值相同即发生hash碰撞。注意的是,数组下标相同的,hash值不一定相同。 所以在数组下标相同时,要先判断hashcode值是否相同,hashcode值相同时,会调用equals()方法来比较key值,然后存储对象

3. HashMap和HashTable的区别

        HashMap是基于哈希表的Map接口实现,以key-value存储形式存在,即主要用来存放键值对。和HashTable线程安全不一样,HashMap的实现是不同步的,这也意味着它不是线程安全的,但HashMap的value和key是可以存储null值的,且从源码可以知道,null值是放在第0个桶。若是需要线程安全,可以使用ConcurrentHashMap

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值