HashMap基础问题总结
1.前言
近期看了一些HashMap方面的内容,主要对比的是1.7和1.8版本的,由于网上都有,我也是查阅了一些博客和技术公众号,特此将自己觉得不错的文章作为参考记录以下。
2.导图总览
3.参考文章
https://mp.weixin.qq.com/s/fZRPogkkUfBnhbZQB5r-uw
4.HashMap
- 1.7版本
- 1.8版本
5.ConcurrentHashMap
- 1.7版本
采用了分段锁技术,继承ReentrantLock
- 1.8版本
其中抛弃了原有的 Segment 分段锁,而采用了 CAS + synchronized 来保证并发安全性。
6.hashmap线程不安全的原因
- resize死循环
- fail-fast:使用迭代器的过程中,有其他线程修改了map
7.如何判断一个链表有环
在时间和空间上都最优的方法是,声明两个指针,一个指针每次向下移动一个位置,第二个指针每次向下移动两个位置,如果存在环,当第一个指针跑完第一圈的时候就会和第二个指针指向同一个节点
8.判断两个单向链表是否相交,如果相交,求出交点。
两个没有环的链表相交,那么其最后一个节点就相同,判断完相交之后,找相交的节点,两个指针分别指向两个链表头部,较长的链表指针先向后移动(len1-len2)的长度,然后开始遍历两个链表,第一个相同的即相交点
9.判断有环的链表入口点
参考文章:https://blog.csdn.net/question_720520/article/details/70954181