![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
csdn_586
这个作者很懒,什么都没留下…
展开
-
高并发下的HashMap(jdk1.8以下版本)
HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定的饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候HashMap需要扩展它的长度,也就是进行Resize。HashMap的Resize不是简单的把长度扩大,而是经过下面两个步骤: 1 . 扩容:创建一个新的Entry空数组,长度是原数组的2倍。 2 . ReHash:遍历原Entry数组,把所有的Ent...转载 2018-07-06 08:52:56 · 251 阅读 · 0 评论 -
HashMap
HashMap扩容后,桶的数量是原来的两倍!转载 2018-07-05 22:05:06 · 195 阅读 · 0 评论 -
什么是ConcurrentHashMap?(jdk1.8以下版本)
想要避免HashMap的线程安全问题有很多办法,比如改用HashTable或者Collection.synchronizedMap。但是这两者有着共同的问题:性能。无论是读操作还是写操作,它们都会给整个集合加锁,导致同一时间的其他操作为之阻塞。在并发环境下,如何能够兼顾线程安全和运行效率呢?这时候,ConcurrentHashMap就应运而生了。掌握HashMap后,学习ConcurrentHas...转载 2018-07-06 09:28:34 · 940 阅读 · 0 评论 -
为什么Hashtable ConcurrentHashmap不支持key或者value为null
在很多java资料中,都有提到 ConcurrentHashmap HashMap和Hashtable都是key-value存储结构,但他们有一个不同点是 ConcurrentHashmap、Hashtable不支持key或者value为null,而HashMap是支持的。为什么会有这个区别?在设计上的目的是什么?在网上找到了这样的解答:The main reason that nulls are...转载 2018-07-06 13:56:44 · 1485 阅读 · 5 评论 -
ConcurrentHashMap能完全替代HashTable吗?
ConcurrentHashMap与HashTable都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHash...转载 2018-07-06 14:02:41 · 1309 阅读 · 1 评论 -
对红黑树的一些理解
1,红黑树(RBT)的定义:它或者是一颗空树,或者是具有一下性质的二叉查找树:1.节点非红即黑。2.根节点是黑色。3.所有NULL结点称为叶子节点,且认为颜色为黑。4.所有红节点的子节点都为黑色。5.从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点。2,如何理解和记忆这5个定义?称为“红黑树”,即节点非红即黑,给节点着色的目的是为了使树保持一定的平衡性质,那么如何来保持一棵树的平衡性质呢?...转载 2018-07-06 15:41:03 · 364 阅读 · 0 评论