![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
吴顺达
这个作者很懒,什么都没留下…
展开
-
延迟队列 DelayQueue 使用与源码解析
当内存中有一堆的客户信息,需要实时移除VIP到期的客户的特权时有以下做法。做法1:定时一段时间检查一遍所有的元素,如果客户的VIP到期日期小于当前,则取消客户的VIP特权。做法2:利用优先队列小顶堆的结构,将最快要过期的客户信息放置在堆顶,一个消费线程去poll堆顶元素并且处理,这样就不用去遍历全部的元素了。当日期不到时便让线程等待多长时间,当时间到时唤醒线程处理。以上做法2有现成的队列可以使用,就是接下来要说的延迟队列。DelayQueue结构是不是跟优先队列很像。DelayQueue其原创 2020-11-30 19:30:37 · 343 阅读 · 0 评论 -
ArrayList 一篇就够
平常开发中以下语句可能是最经常写的语句之一List<Integer> list = new ArrayList<>();继承关系public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableArrayList顶层接口是Collection,List,RandomAcce原创 2020-11-11 17:20:18 · 231 阅读 · 1 评论 -
LinkedList 一篇就够
创建List<Integer> list = new LinkedList<>();结构 双向链表继承关系public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, SerializableSerializable接口中内容是空的,是一个标志接口,一个类只有实现了Ser原创 2020-11-11 21:48:21 · 151 阅读 · 0 评论 -
PriorityQueue PriorityBlockingQueue 优先级队列与优先级阻塞队列 源码解析
试想一下,如果要在一堆数据中找出最大的或者最小的是不要进行一次遍历,时间复杂度为O(N)还能不能优化,比如O(1)的时间复杂度就能获取到。这就是这篇博客需要说的PriorityQueue优先级队列。先看结构完全二叉树:一棵有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,节点得插入永远在下一个位置。下面得紫色的那排小字就是节点的序号。那么第N个元素的左孩子queue [2 * n + 1]右孩子就是queue [2 *(n + 1)]。看到源码就会发现PriorityQueue存储原创 2020-11-26 17:32:25 · 522 阅读 · 0 评论