HashMap基础问题总结

1.前言

  近期看了一些HashMap方面的内容,主要对比的是1.7和1.8版本的,由于网上都有,我也是查阅了一些博客和技术公众号,特此将自己觉得不错的文章作为参考记录以下。

2.导图总览

image

3.参考文章

https://mp.weixin.qq.com/s/fZRPogkkUfBnhbZQB5r-uw

4.HashMap

  • 1.7版本

image
- 1.8版本

image

5.ConcurrentHashMap

  • 1.7版本

采用了分段锁技术,继承ReentrantLock
image
- 1.8版本

其中抛弃了原有的 Segment 分段锁,而采用了 CAS + synchronized 来保证并发安全性。
image

6.hashmap线程不安全的原因

  • resize死循环
  • fail-fast:使用迭代器的过程中,有其他线程修改了map

7.如何判断一个链表有环

image
在时间和空间上都最优的方法是,声明两个指针,一个指针每次向下移动一个位置,第二个指针每次向下移动两个位置,如果存在环,当第一个指针跑完第一圈的时候就会和第二个指针指向同一个节点

8.判断两个单向链表是否相交,如果相交,求出交点。

两个没有环的链表相交,那么其最后一个节点就相同,判断完相交之后,找相交的节点,两个指针分别指向两个链表头部,较长的链表指针先向后移动(len1-len2)的长度,然后开始遍历两个链表,第一个相同的即相交点

9.判断有环的链表入口点

参考文章:https://blog.csdn.net/question_720520/article/details/70954181
  

猜你喜欢

转载自blog.csdn.net/zh15732621679/article/details/81839985