Java集合
文章平均质量分 94
沸羊羊_
如果不想成为一个碌碌无为的人,除了对浩渺星空的无穷向往,还必须具备对平庸生活的憎恶。.....
展开
-
为什么foreach中不能进行arrayList元素的remove/add操作?
前言小编之前剖析了 HashMap 和 ConcurrentHashMap 底层原理,需要的小伙伴可以点击传送门跳转。深度剖析HashMap一篇文章就够了一文深度剖析ConcurrentHashMap步入正题我们先来验证一下,foreach 中是不是真的不能对 arraylist 进行 remove/add 操作?List<String> list = new ArrayList<>();list.add("1");list.add("2");for (String原创 2021-06-23 09:18:17 · 2060 阅读 · 41 评论 -
一文深度剖析ConcurrentHashMap
文章目录前言概述jdk1.7jdk1.8源码分析常量值initTable()putVal()helpTransfer()addCount()get()size()mappingCount()面试题1、ConcurrentHashMap 实现原理?2、ConcurrentHashMap 的 put 方法执行逻辑?3、ConcurrentHashMap 的 get 方法执行逻辑?是否要加锁?为什么?4、ConcurrentHashMap 不支持 key / value 为 null 的原因?5、Concurre原创 2021-06-19 11:09:18 · 3676 阅读 · 16 评论 -
面试官:为什么默认初始容量为2次幂?不是2次幂会怎样?讲讲 HashMap 扰动函数?
文章目录前言源码剖析前言本文直接解释问题,至于对 Hashmap 数据结构还不太清楚的同学可以先查阅此篇文章:深度剖析HashMap一篇文章就够了源码剖析jdk1.8 的 putVal()final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i;原创 2021-06-07 19:47:28 · 2079 阅读 · 6 评论 -
面试官:HashMap 为什么选用红黑树这种数据结构优化链表?
文章目录自平衡二叉查找树(Self-Balancing Binary Search Tree)AVL红黑树(R-B Tree)AVL与红黑树异同应用场景自平衡二叉查找树(Self-Balancing Binary Search Tree)二叉查找树操作的运行时间与树的高度有密切关系。一个树的高度指的是从树的根开始所能到达的最长路径的长度。计算数的高度要从叶子节点开始,首先将叶子节点高度置为0,沿着树的路径向上计算父节点的高度,以此类推直到所有树的节点高度都被标注后,则根节点的高度就是树的高度。eg:原创 2021-06-06 10:59:10 · 5946 阅读 · 128 评论 -
深度剖析HashMap一篇文章就够了
文章目录HashMap概述红黑树源码分析默认值影响 HashMap 性能的两个因素put()resize()treeify面试题1、HashMap 为什么选用红黑树这种数据结构优化链表?2、为什么 HashMap 默认初始容量为 16 ?3、HashMap 中链表转化为红黑树的条件?4、HashMap为什么是非线程安全的?体现在哪些方面?5、说说 Hashmap 中 put 是如何实现的?6、为什么 Hashmap 容量为 2 次幂?不是 2 次幂会有什么后果?7、平时使用 Hashmap 时会将什么类型原创 2021-06-06 08:40:30 · 2482 阅读 · 19 评论