![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构+java集合
u013738122
这个作者很懒,什么都没留下…
展开
-
ConcurrentLinkedQueue源码探究
原文地址 JDK 中基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理剖析,ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全? ConcurrentLinkedQueue是线程安全的无界非阻塞队列,其底层数据结构是使用单向链表实现,入队和出队操作是使用我们经常提到的CAS来保证线程安全的。 我们首先看一下ConcurrentLinkedQueue的类图结构先,好有一个内部逻辑有一个大概的印象,如下图所示:转载 2020-08-20 15:01:07 · 120 阅读 · 0 评论 -
CopyOnWriteArrayList详解
原文地址 可以提前读这篇文章:多读少写的场景 如何提高性能 写入时复制(CopyOnWrite)思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心思想是,如果有多个调用者(Callers)同时要求相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者视图修改资源内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他转载 2020-08-19 16:35:45 · 329 阅读 · 0 评论 -
红黑树,B树和B+树
原文地址 ———————————— ———————————— ...转载 2020-04-13 11:28:38 · 85 阅读 · 0 评论 -
HashSet源码
原文地址 上篇文章《HashMap其实就那么一回事儿之源码浅析》介绍了hashMap, 本次将带大家看看HashSet, HashSet其实就是基于HashMap实现, 因此,熟悉了HashMap, 再来看HashSet的源码,会觉得极其简单。下面还是直接看源码吧: public class HashSet<E> extends AbstractSe...转载 2019-03-15 20:27:12 · 87 阅读 · 0 评论 -
LinkedHashMap详解
原文地址 一、初识LinkedHashMap 上篇文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。 大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场...转载 2019-03-15 19:48:02 · 1438 阅读 · 0 评论 -
哈希表原理
原文地址 哈希表的定义哈希存储的基本思想是以关键字Key为自变量,通过一定的函数关系(散列函数或哈希函数),计算出对应的函数值(哈希地址),以这个值作为数据元素的地址,并将数据元素存入到相应地址的存储单元中。查找时再根据要查找的关键字采用同样的函数计算出哈希地址,然后直接到相应的存储单元中去取要找的数据...转载 2019-02-26 14:40:22 · 216 阅读 · 0 评论 -
LinkedHashMap源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/37867985 前言:有网友建议分析下LinkedHashMap的源码,于是花了一晚上时间研究了下,分享出此文(这个系列的最后一篇博文了),希望大家相互学习。LinkedHashMap的源码理解起来也不难(当然,要建立在对HashMap源码有较好理解的基础上...转载 2019-01-15 11:59:36 · 108 阅读 · 0 评论 -
TreeMap源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36421085前言 本文不打算延续前几篇的风格(对所有的源码加入注释),因为要理解透TreeMap的所有源码,对博主来说,确实需要耗费大量的时间和经历,目前看来不大可能有这么多时间的投入,故这里意在通过于阅读源码对TreeMap有个宏观上的把握,并就其中一些...转载 2019-01-15 11:57:53 · 129 阅读 · 0 评论 -
Hashtable源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36191279Hashtable简介 Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 Hashtable也是JDK1.0...转载 2019-01-15 11:56:35 · 100 阅读 · 0 评论 -
HashMap源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955您好,我正在参加CSDN博文大赛,如果您喜欢我的文章,希望您能帮我投一票,谢谢!投票地址:http://vote.blog.csdn.net/Article/Details?articleid=35568011HashMap简介 HashMap...转载 2019-01-15 11:54:34 · 101 阅读 · 0 评论 -
Vector源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/35793865Vector简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。 Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加...转载 2019-01-15 11:52:07 · 260 阅读 · 0 评论 -
LinkedList源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/35787253您好,我正在参加CSDN博文大赛,如果您喜欢我的文章,希望您能帮我投一票,谢谢!投票地址:http://vote.blog.csdn.net/Article/Details?articleid=35568011LinkedList简介 Link...转载 2019-01-15 11:47:51 · 101 阅读 · 0 评论 -
ArrayList源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/35568011本篇博文参加了CSDN博文大赛,如果您觉得这篇博文不错,希望您能帮我投一票,谢谢!投票地址:http://vote.blog.csdn.net/Article/Details?articleid=35568011ArrayList简介 Arra...转载 2019-01-15 11:44:56 · 81 阅读 · 0 评论 -
Java集合框架
转载轻注明出处:http://blog.csdn.net/ns_code/article/details/35564663&nbsp; &nbsp; Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集...转载 2018-07-23 14:32:05 · 85 阅读 · 0 评论 -
循环队列
循环队列循环队列主要注意两点:处理队头与队尾指针的循环移动front = (front+1)%queueSizerear = (rear+1)%queueSize判断何时队列为空,何时为满front == rear 时,可能为空,也可能为满,所以要用(rear+1)%queueSize == front 来区分队列为满(当然也可以用(front +1)%queueSize == re...原创 2018-10-11 11:48:20 · 327 阅读 · 0 评论 -
多维数组
不管是几维数组,在物理存储上都是一片连续的存储空间,数组名指向开始地址(并且数组名是只读的)int[3][4][5] a ; //定义了一个三维数组,可看做3个二维数组a[2][3][1] 2表示前面有两个二维数组 3表示所在的二维数组中前面有3个一维数组所以a[2][3][1] 等于 *(a + 2×(4×5) + 3×(5) + 1)2×(4×5) + 3×(5...原创 2018-06-17 13:30:13 · 114 阅读 · 0 评论 -
哈希表理解
哈希表就是将若干值(V1, V2, V3, …), 通过映射关系f,对应到存储结构中的逻辑地址。 一般称(V1, V2, V3, …)为关键字 映射关系f 一般称为Hash函数逻辑地址中可能存储的是关键字本身,也可能是与关键字不相关的值,也可能是关键字形成的键值对等等哈希表存储结构一般使用数组,此时就是将(V1, V2, V3, …)通过Hash函数对应到数组下标...原创 2018-06-16 14:50:01 · 152 阅读 · 0 评论