1. 程式人生 > >java優先佇列的使用(包括重寫比較函式)

java優先佇列的使用(包括重寫比較函式)

import java.util.*;
public class DFStu {
    public static void main(String args[]){
        //優先字元,從大到小
        //重寫比較器
        Queue<Character> que = new PriorityQueue( new Comparator<Character>() {
            public int compare(Character e1,Character e2) {
                return e2 - e1;///過載優先順序使其變為大根堆
            }
        });
        que.add('t');
        que.add('c');
        que.add('g');
        que.add('f');
        que.add('b');
        int flag1=1;
        while(que.size()>0){
            if(flag1==1){
                System.out.print(que.poll());
                flag1=0;
            }else {
                System.out.print(" " + que.poll());
            }
        }
        System.out.println();

        //優先數字,從小到大,也是預設的方式
        Queue<Integer> que2 = new PriorityQueue<Integer>();
        que2.add(11);
        que2.add(2);
        que2.add(14);
        que2.add(5);
        que2.add(7);
        int flag2=1;
        while(que2.size()>0){
            if(flag2==1){
                System.out.print(que2.poll());
                flag2=0;
            }else {
                System.out.print(" " + que2.poll());
            }
        }
        System.out.println();
    }
}