
数据结构
吴顺达
这个作者很懒,什么都没留下…
展开
-
延迟队列 DelayQueue 使用与源码解析
当内存中有一堆的客户信息,需要实时移除VIP到期的客户的特权时有以下做法。 做法1: 定时一段时间检查一遍所有的元素,如果客户的VIP到期日期小于当前,则取消客户的VIP特权。 做法2: 利用优先队列小顶堆的结构,将最快要过期的客户信息放置在堆顶,一个消费线程去poll堆顶元素并且处理,这样就不用去遍历全部的元素了。当日期不到时便让线程等待多长时间,当时间到时唤醒线程处理。 以上做法2有现成的队列可以使用,就是接下来要说的延迟队列。 DelayQueue结构 是不是跟优先队列很像。DelayQueue其原创 2020-11-30 19:30:37 · 384 阅读 · 0 评论 -
ArrayList 一篇就够
平常开发中以下语句可能是最经常写的语句之一 List<Integer> list = new ArrayList<>(); 继承关系 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable ArrayList顶层接口是Collection,List,RandomAcce原创 2020-11-11 17:20:18 · 259 阅读 · 1 评论 -
LinkedList 一篇就够
创建 List<Integer> list = new LinkedList<>(); 结构 双向链表 继承关系 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable Serializable 接口中内容是空的,是一个标志接口,一个类只有实现了Ser原创 2020-11-11 21:48:21 · 175 阅读 · 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 · 641 阅读 · 0 评论