美文网首页
PriorityQueue

PriorityQueue

作者: aliusa | 来源:发表于2018-02-27 17:10 被阅读0次

定义优先级队列,实现了AbstractQueue

优先队列跟普通的队列不一样,普通队列是一种遵循FIFO规则的队列,拿数据的时候按照加入队列的顺序拿取。 而优先队列无论插入的顺序如何每次拿数据的时候都会拿出优先级最高(优先级value最小)的数据。

Priority原理分析

优先队列内部维护着一个堆,每次取数据的时候都从堆顶拿数据,这就是优先队列的原理。

每次add的时候都会siftUp(i, e);从下往上调整,因为新增元素是加到最后一个叶子节点

每次poll的时候都会siftDown(0, x); 从上往下调整,因为删除元素是删除堆顶的元素

例子:

Comparatortest = new Comparator() { 

 @Override 

 public int compare(Integer t1, Integer t2) { return t1 - t2;} }; 

 PriorityQueue test2 = new PriorityQueue(6, test);

    test2.add(6);

    test2.add(10);

    test2.add(2);

    test2.add(3);

    test2.add(4);

    test2.add(5);

    System.out.println(test2.toString());

    System.out.println(test2.remove());

输出:

[10, 6, 5, 3, 4, 2]

2

相关文章

  • Java集合之优先队列PriorityQueue

    PriorityQueue 源自java.util.PriorityQueue,继承结构: PriorityQue...

  • JUC-队列源码解析

    PriorityQueue 我们先看下PriorityQueue的继承结构 先看些接口Queue Abstract...

  • 延时队列(DelayQueue)探秘

    由上面的UML图可知,DelayQueue依赖于PriorityQueue,使用PriorityQueue存储对象...

  • JAVA优先级队列详解及源码剖析

    JAVA优先级队列详解及源码剖析 PriorityQueue PriorityQueue是在JDK1.5之后出现的...

  • java笔记

    [java优先队列PriorityQueue的使用] PriorityQueue弹出优先级最高的元素,优先级的比较...

  • Java PriorityQueue的用法

    一、创建一个PriorityQueue实例 二、创建一个String类型的PriorityQueue实例 三、使用...

  • 深入理解Java PriorityQueue

    PriorityQueue 本文github地址 Java中PriorityQueue通过二叉小顶堆实现,可以用一...

  • PriorityQueue

    定义优先级队列,实现了AbstractQueue 优先队列跟普通的队列不一样,普通队列是一种遵循FIFO规则的队列...

  • PriorityQueue

    PriorityQueue 总体介绍 前面以Java ArrayDeque为例讲解了Stack和Queue,其实还...

  • PriorityQueue

    定义:在计算机科学中,优先队列是一种抽象的数据类型(ADT),类似于普通队列或堆栈数据结构,但是每个元素都有一个与...

网友评论

      本文标题:PriorityQueue

      本文链接:https://www.haomeiwen.com/subject/vbemxftx.html