`
wbj0110
  • 浏览: 1603501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java中PriorityQueue优先级队列使用方法

    博客分类:
  • Java
阅读更多

优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

  PriorityQueue是从JDK1.5开始提供的新的数据结构接口。

  如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。

       由于网上的资料大多将优先级队列各个方法属性,很少有实例讲解的,为方便大家以后使用,我就写了个demo~

      如果想实现按照自己的意愿进行优先级排列的队列的话,需要实现Comparator接口。下面的方法,实现了根据某个变量,来进行优先级队列的建立。

 

[java] view plaincopy
 
  1. import java.util.Comparator;  
  2. import java.util.PriorityQueue;  
  3. import java.util.Queue;  
  4.   
  5. public class test {  
  6.     private String name;  
  7.     private int population;  
  8.     public test(String name, int population)  
  9.     {  
  10.         this.name = name;  
  11.         this.population = population;  
  12.     }  
  13.     public String getName()  
  14.     {  
  15.          return this.name;  
  16.     }  
  17.   
  18.     public int getPopulation()  
  19.     {  
  20.          return this.population;  
  21.     }  
  22.     public String toString()  
  23.     {  
  24.          return getName() + " - " + getPopulation();  
  25.     }  
  26.     public static void main(String args[])  
  27.     {  
  28.         Comparator<test> OrderIsdn =  new Comparator<test>(){  
  29.             public int compare(test o1, test o2) {  
  30.                 // TODO Auto-generated method stub  
  31.                 int numbera = o1.getPopulation();  
  32.                 int numberb = o2.getPopulation();  
  33.                 if(numberb > numbera)  
  34.                 {  
  35.                     return 1;  
  36.                 }  
  37.                 else if(numberb<numbera)  
  38.                 {  
  39.                     return -1;  
  40.                 }  
  41.                 else  
  42.                 {  
  43.                     return 0;  
  44.                 }  
  45.               
  46.             }  
  47.   
  48.               
  49.               
  50.         };  
  51.         Queue<test> priorityQueue =  new PriorityQueue<test>(11,OrderIsdn);  
  52.           
  53.                   
  54.               
  55.         test t1 = new test("t1",1);  
  56.         test t3 = new test("t3",3);  
  57.         test t2 = new test("t2",2);  
  58.         test t4 = new test("t4",0);  
  59.         priorityQueue.add(t1);  
  60.         priorityQueue.add(t3);  
  61.         priorityQueue.add(t2);  
  62.         priorityQueue.add(t4);  
  63.         System.out.println(priorityQueue.poll().toString());  
  64.     }  
  65. }  
分享到:
评论

相关推荐

    解析Java中PriorityQueue优先级队列结构的源码及用法

    Java中的PriorityQueue是一种特殊的队列,它遵循优先级原则,即队列中的元素根据其优先级进行排列。PriorityQueue在JDK中内置,基于二叉堆数据结构实现,特别是最小堆,这意味着队列头部的元素总是具有最低的优先级...

    优先级队列(堆实现)

    本文将深入探讨优先级队列的概念、实现方式以及如何在实际编程中使用。 首先,理解二叉堆是理解优先级队列的关键。二叉堆分为最大堆和最小堆,最大堆的每个父节点的值都大于或等于其子节点的值,而最小堆则相反,每...

    java使用小根堆实现优先级队列的几种方式

    本篇文章将探讨如何使用小根堆来实现Java中的优先级队列,以及其背后的实现原理和不同方法。 1. 小根堆的概念: 小根堆是二叉堆的一种类型,其中每个父节点的值都小于或等于其子节点的值。在Java中,`...

    Java数组模拟优先级队列数据结构的实例

    在优先级队列中,具有较高优先级的元素会被优先处理。在Java中,实现优先级队列通常会利用内置的数据结构如`TreeSet`或`TreeMap`,因为它们提供了自动排序的功能,可以根据元素的优先级进行调整。 在上述的Java代码...

    JAVA:PriorityQueue

    请注意,迭代器不保证以任何特定的顺序遍历优先级队列中的元素。 - **boolean offer(E e)**:将指定的元素插入此优先级队列。如果成功插入且未发生溢出,则返回`true`。 - **E peek()**:获取但不移除此队列的头;...

    Java-PriorityQueue:任务优先级队列的实现

    基于任务的PriorityQueue的实现在此程序中,用户可以: 注册新任务,并传递名称和优先级 提取并返回列表中优先级最低的任务 清除任务列表 列出所有待处理的任务及其优先级 导入和导出CSV文件中的任务列表 退出该...

    PriorityQueue带优先级的队列md,学习代码笔记

    `PriorityQueue`是Java集合框架中的一种特殊队列,它基于优先堆实现,可以自动对队列中的元素进行排序。与普通队列不同,`PriorityQueue`不是先进先出(FIFO)的数据结构,而是根据元素的自然顺序或者自定义比较器来...

    Java队列源码-priority-queue:Java中优先级队列实现的源代码

    Java中的优先级队列(PriorityQueue)是一种特殊的队列,它按照元素的优先级进行排序。在Java集合框架中,PriorityQueue是位于java.util包下的一个类,它实现了Queue接口,但并不保证按照先进先出(FIFO)的顺序进行...

    .NETPriorityQueue:使用C#中的二进制堆的自定义通用优先级队列实现。 (据我所知)它符合大多数.NET标准。不是线程安全的

    使用C#中的二进制堆的自定义优先级队列实现。为个人/俱乐部项目编写。 (据我所知)它符合大多数.NET标准。不是线程安全的。 信息 这段代码是从Java项目转换为利用C#功能集并在结构上更合理的东西。虽然原始的Java...

    Java优先队列(PriorityQueue)示例Java

    优先队列中的元素按照优先级排序,最高的优先级元素总是在队列的头部。在Java中,PriorityQueue类位于`java.util`包下,它不保证队列的迭代顺序,但提供了插入和删除元素的高效操作。 **优先队列的基本特性:** 1. ...

    java集合-PriorityQueue的使用

    PriorityQueue是Java中的一个优先级队列,它可以根据元素的优先级对元素进行排序,并且允许高效地获取和删除最高优先级的元素。

    基于java优先队列(PriorityQueue)的多路排序算法(含代码)

    在Java编程中,优先队列(PriorityQueue)是一种特殊的队列,它按照元素的优先级进行出队。这种数据结构在实现多路归并排序(Multi-Merge Sort)时非常有用,因为它能有效地处理多个已排序的输入流,并将它们合并成...

    heap-js:JavaScript TypeScript的高效二进制堆(优先级队列,二进制树)数据结构。 包括JavaScript方法,Python的heapq模块方法和Java的PriorityQueue方法

    包括JavaScript方法,Python的heapq模块方法和Java的PriorityQueue方法。 易于使用,已知接口,经过测试并有据可查JavaScript二进制堆库。 默认情况下,实例为integer min heap 。它比对数组排序更快吗? 这取决于...

    优先队列-java可以选择属性和升序降序

    - `PriorityQueue`不是同步的,如果你需要在多线程环境中使用,需要自己实现同步控制。 通过这些基本操作,我们可以利用`PriorityQueue`在Java中实现各种优先级处理的逻辑。结合NetBeans IDE,开发者可以方便地...

    JAVA中的优先队列与堆(POJ 2442)

    例如,假设题目要求找到一系列任务的最早完成时间,其中每个任务都有一个开始时间和结束时间,我们可以使用优先队列来存储即将开始的任务,每次从队列中取出优先级最高的任务(即最早开始的任务),直到没有任务为止...

    用数组实现的优先队列(JAVA)

    在Java中,我们可以使用`java.util.PriorityQueue`类来实现优先队列,但这里我们关注的是用数组实现的方法。 2. **数组实现的基本思想** 数组实现优先队列的核心思想是维护一个最小堆(最小堆是堆数据结构的一种,...

    java 栈和队列的小例子

    Java中可以使用LinkedList、ArrayList或PriorityQueue来实现队列,其中LinkedList和ArrayList适用于普通队列,而PriorityQueue则用于优先级队列。以下是一个使用LinkedList实现的队列示例: ```java import java....

    Java队列源码-simulation-queue-priory-pso:文章“队列优先级优化算法:用于集成过程的新颖任务调度”的源代码(Ja

    6. `PSOOptimizer`: 基于PSO的调度优化器实现,实现了`Optimizer`接口,负责使用PSO算法更新任务在优先级队列中的位置。 这个项目的具体实现可能涉及到以下步骤: 1. 初始化优先级队列和粒子群。 2. 创建任务并根据...

    优先队列算法实现(Java)

    - 在没有明确指定优先级函数时,通常假设元素的优先级与其在队列中的位置有关,例如最小堆或最大堆。 2. **Java中的PriorityQueue类** - Java的`java.util.PriorityQueue`是优先队列的实现,它基于二叉堆(通常是...

    java队列

    4. **优先级队列**:`PriorityQueue`类实现了具有优先级的无界队列。元素根据其自然顺序或比较器提供的顺序进行排序。 5. **并发容器**:`ConcurrentLinkedQueue`是一个线程安全的无界队列,基于链接节点的非阻塞...

Global site tag (gtag.js) - Google Analytics