首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
JDK源码(集合)
订阅
超凶的土拨鼠
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
死磕 java集合之ConcurrentHashMap源码分析(二)——扩容全解析
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 本章接着上一章,链接直达请点我。 第一次放元素时,初始化桶数组。 (3)扩容门槛写死的是桶数组大小的0.75倍,桶数组大小即map的容量,也就是最多存储多少个元素。 每次添加元素后,元素数…
死磕 java集合之ConcurrentHashMap源码分析(一)——插入元素全解析
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 前记,从这篇文章开始我们换一种学习的方式,彤哥先抛出问题,大家尝试着在脑海中回答这些问题,然后再进入我们的源码分析过程,最后彤哥再挑几个问题回答。 ConcurrentHashMap是Ha…
死磕 java集合之终结篇
我们先来看一看java中所有集合的类关系图。 这里面的类太多了,请放大看,如果放大还看不清,请再放大看,如果还是看不清,请放弃。 我们下面主要分成五个部分来逐个击破。 List中的元素是有序的、可重复的,主要实现方式有动态数组和链表。 java中提供的List的实现主要有Arr…
死磕 java集合之LinkedList源码分析
LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用,它是怎么实现的呢?让我们一起来学习吧。 通过继承体系,我们可以看到LinkedList不仅实现了List接口,还实现了Queue和Deque接口,所以它既能作为List使用,…
死磕 java集合之ConcurrentHashMap源码分析(三)——删除元素全解析(内含彩蛋)
🖕欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 删除元素跟添加元素一样,都是先找到元素所在的桶,然后采用分段锁的思想锁住整个桶,再进行操作。 获取元素,根据目标key所在桶的第一个元素的不同采用不同的方式获取元素,关键点在于find()…
死磕 java集合之HashSet源码分析
集合,这个概念有点模糊。 广义上来讲,java中的集合是指java.util包下面的容器类,包括和Collection及Map相关的所有类。 中义上来讲,我们一般说集合特指java集合中的Collection相关的类,不包含Map相关的类。 狭义上来讲,数学上的集合是指不包含重…
死磕 java集合之HashMap源码分析
欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改的速度都很快,能达到O(1)的平均时间复杂度。它是非线程安全的,且不保证元素存储的顺序; HashMap…
死磕 java集合之ArrayBlockingQueue源码分析
ArrayBlockingQueue是java并发包下一个以数组实现的阻塞队列,它是线程安全的,至于是否需要扩容,请看下面的分析。 队列,是一种线性表,它的特点是先进先出,又叫FIFO,就像我们平常排队一样,先到先得,即先进入队列的人先出队。 c)只使用了一个锁来控制入队出队,…
死磕 java集合之PriorityQueue源码分析
优先级队列,是0个或多个元素的集合,集合中的每个元素都有一个权重值,每次出队都弹出优先级最大或最小的元素。 一般来说,优先级队列使用堆来实现。 还记得堆的相关知识吗?链接直达【拜托,面试别再问我堆(排序)了!】。 让我们一起来学习吧。 不知道fast-fail的,查看这篇文章的…
死磕 java集合之LinkedHashMap源码分析
欢迎关注我的公众号“彤哥读源码”,查看更多源码系列文章, 与彤哥一起畅游源码的海洋。 LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问,可以用来实现LRU缓存策略。 LinkedHashMap可以看成是 LinkedList + …