![](https://img-blog.csdnimg.cn/2019111914094563.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
新数据结构
文章平均质量分 75
List、Map、Set
张井天
知其然,知其所以然!
展开
-
LinkedHashMap实现LRU
前言:LinkedHashMap是HashMap的子类,在原有HashMap数据结构的基础上,它还维护着一个双向链表链接所有entry,这个链表定义了迭代顺序,通常是数据插入的顺序。上图我只画了链表,其实红黑树节点也是一样的,只是节点类型不一样而已也就是说我们遍历LinkedHashMap的时候,是从head指针指向的节点开始遍历,一直到tail指向的节点。源码public class LinkedHashMap<K,V> extends HashMap<K,V> imp转载 2022-05-12 19:51:06 · 2297 阅读 · 0 评论 -
大小根堆
Java代码实现的小根堆: https://blog.csdn.net/weixin_43160215/article/details/86288375PriorityQueue 的实例使用: https://www.cnblogs.com/keeya/p/9309617.html原创 2020-06-28 15:03:15 · 259 阅读 · 0 评论 -
详细理解优先队列DelayedWorkQueue
博文: https://blog.csdn.net/nobody_1/article/details/99684009原创 2020-06-28 15:00:52 · 1564 阅读 · 0 评论 -
SynchronousQueue 1.8 源码解析
1、简介:SynchronousQueue 是一个很奇怪的队列,感觉都不能叫队列,因为内部没有数据的存储空间,队列不能peek,因为不存在元素,任何入队的线程都会阻塞,直到有线程来出队,也就是这个队列是一组操作,入队和出队要一起离开,出队也是一样,必须等入队,必须结伴而行;队列支持公平和非公平的模式(指的是队列匹配线程的顺序),公平模式的数据结构是队列(FIFO),非公平模式使用的是栈(LIFO...转载 2019-10-10 15:27:19 · 170 阅读 · 0 评论 -
LinkedBlockingQueue队列源码解析
前言:上一篇我们讲解了亲戚:ArrayBlockingQueue : https://blog.csdn.net/zhangyong01245/article/details/102390093 的相关知识。ArrayBlockingQueue 和 LinkedBlockingQueue 相当于 ArrayList 和 LinkedList 一样 ,LinkedBlockingQueue...原创 2019-10-09 21:42:51 · 180 阅读 · 0 评论 -
ArrayBlockingQueue队列源码解析
ArrayBlockingQueue简介:ArrayBlockingQueue 是一个阻塞式的有界队列,内部存储数据的格式和 ArrayList 类似 通过 Object[] 数据来存储数据, 并且其在实现时通过 ReentrantLock 保证了线程的安全性。ArrayBlockingQueue 特点:a. 初始化必须要定义队列的容量,且不会进行扩容( 容量满,则阻塞进队操作;容量空,则...原创 2019-10-08 16:05:36 · 200 阅读 · 0 评论 -
HashMap源码解析
总结:以下总结内容摘抄自: https://www.cnblogs.com/heyonggang/p/9112731.htmlHashMap:JDK1.7底层是 数组 + 链表实现的, JDK1.8添加了红黑树,节点达到一定条件之后,链表和红黑树之间存在相互转化的场景key 不可以重复,但可以为null,value值不做限定。HashMap数组初始化size=16,每次扩容为2倍,si...原创 2019-11-28 20:20:26 · 136 阅读 · 0 评论 -
TreeMap源码解析
前言TreeMap实现了SotredMap接口,它是有序的集合。而且由红黑树实现的,每个key-value都作为一个红黑树的节点。如果在调用TreeMap的构造函数时没有指定比较器,则根据key执行自然排序。红黑树:红黑树是二叉树的一种优化,保留了二叉树的特性包含一个根节点和两个子节点,其中 【左子节点 < 根节点 < 右子节点】,又增加了每个节点的颜色红和黑,通过二叉树的左右...原创 2019-11-21 20:17:28 · 340 阅读 · 0 评论 -
ArrayList、Vector、CopyOnWriteArrayList、LinkedList源码进阶解析
前言:List集合下常用的集合有 ArrayList (JDK1.2)、Vector (JDK1.0)、CopyOnWriteArrayList (JDK1.5)、LinkedList (JDK1.2),对应的加入JDK的版本也不同。其中 ArrayList、Vector、CopyOnWriteArrayList 底层均是由数组来实现的,其中Vector和CopyOnWriteArrayLi...原创 2019-11-20 18:38:20 · 283 阅读 · 0 评论