数据结构
初心江湖路
多学一分增一分。
展开
-
HashMap和ConcurrentHashMap
1、HashMap非线程安全,ConcurrentHashMap线程安全HashMap为什么非线程安全,我们暂且不考虑ConcurrentModificationException这一并发异常。死循环在HashMap扩容临界点时,如果两个线程都执行put操作,均进行扩容操作,并都遍历到同一个下标下的头结点,然后其中一个线程在完成指针赋值操作后挂起,另一个线程先顺利完成扩容,最终在两个线程...原创 2020-02-05 17:29:32 · 119 阅读 · 0 评论 -
LintCode103:带环链表,返回初始成环节点
Tip:快慢双指针说明:快指针一次走两个节点,慢指针一次走一个节点,如果存在环,那么两指针肯定能相遇,这是解题的基本逻辑等量关系:要找到成环的初始节点,需要找到等量关系,确定走过的节点数的等量关系设:初始成环节点之前的节点数为A,快慢指针从初始成环节点到相遇节点间的节点数为B,从相遇节点到初始成环节点间的剩余部分节点数为C等量关系:快指针走过的节点数=2 x 慢指针走过的节点数,相遇时快指...原创 2020-01-21 10:58:39 · 163 阅读 · 0 评论 -
ConcurrentHashMap中的同步
由于HashMap是非线程安全的,扩容时容易造成环形链表,导致在获取链表中不存在的值时陷入死循环。于是在HashMap在并发环境中需要加锁使用,这种方式开销大。Java中提供了另一种数据结构ConcurrentHashMap,专门用于并发环境下的Map映射需求。具体机制:CAS 结合 synchronized,并通过sun.misc.Unsafe提供的可见性操作接口来访问数据。主要关注以下几个...原创 2019-12-12 20:44:13 · 727 阅读 · 0 评论 -
红黑树的概念、特性、特性解释、平衡调节过程、代码示例详解
一、概念理解红黑树是一种自平衡二叉查找树,在插入或者删除节点时,都有特定的操作,保持二叉查找树的平衡,用来获得比较好的查找性能。二、红黑树的特性1、节点不是黑色就是红色;2、根节点是黑色;3、每个红色节点的两个叶子节点都是黑色;4、任何一个节点到其叶子节点的所有路径上的黑色节点数相同。三、对特性的解释首先,为什么要设置颜色?颜色可以看成一种特定操作的依据,用以制约二叉查找树平衡。...原创 2019-11-10 18:46:19 · 344 阅读 · 0 评论 -
HashMap底层结构及其它几点总结
本文意在说明以下几点HashMap的底层结构HashMap为什么线程不安全首先我们来看看HashMap的底层结构哈希表箱(bin)或者桶(bucket)HashMap的数据结构可看做是分桶的哈希表,可称为哈希桶。即按照key(键)的哈希值分桶。桶的大小跟冲突有关,碰撞的key多,桶就大,反之桶就小。桶的基本单元:Node<K,V> 组成normal 桶、TreeN...原创 2019-07-04 15:04:34 · 187 阅读 · 0 评论