zoukankan      html  css  js  c++  java
  • 《转》JAVA中PriorityQueue优先级队列使用方法

    该文章转自:http://blog.csdn.net/hiphopmattshi/article/details/7334487

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

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

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

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

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

     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 }

    输出结果:

    t3 - 3

     

    结论:

      PriorityQueue根据Comparator中实现的比较方法优先加入比较值最大的对象

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/wubingshenyin/p/4496064.html
Copyright © 2011-2022 走看看