Java PriorityQueue的使用方法

来源:互联网 发布:对象数组的指针 编辑:程序博客网 时间:2024/05/01 17:38
优先级队列 PriorityQueue
通过 队列的toString 和 通过Iteator访问队列中的元素,得到的都是存储顺序,而非排队顺序。

通过 使用队列的出队方式(poll)得到的元素,是排队顺序。


package stl;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import java.util.PriorityQueue;import java.util.Queue;import java.util.Random;public class Test10 {public static void main(String[] args){       test();        test2();}public static void test(){        List intList = Arrays.asList(1,2,3,9,4,3,6,0,0,1);    PriorityQueue<Integer> intQueue = new PriorityQueue<Integer>(intList);    System.out.println(intQueue); //存储顺序 [0, 0, 3, 1, 1, 3, 6, 9, 2, 4]    Iterator<Integer> intIteator = intQueue.iterator();    while (intIteator.hasNext()) {    System.out.print(intIteator.next() + ",");  //存储顺序 0,0,3,1,1,3,6,9,2,4,}    System.out.println();    while (!intQueue.isEmpty()) {    System.err.print(intQueue.poll() + ",");   //排队顺序 0,0,1,1,2,3,3,4,6,9,}    System.out.println();System.out.println();         intQueue = new PriorityQueue<>(intList.size(), Collections.reverseOrder());    intQueue.addAll(intList);    System.out.println(intQueue); //存储顺序 [9, 4, 6, 1, 3, 2, 3, 0, 0, 1]    intIteator = intQueue.iterator();    while (intIteator.hasNext()) {    System.out.print(intIteator.next() + ","); //存储顺序 9,4,6,1,3,2,3,0,0,1,}    System.out.println();    while (!intQueue.isEmpty()) {    System.err.print(intQueue.poll() + ","); //排队顺序 9,6,4,3,3,2,1,1,0,0,}    System.out.println();System.out.println();                String s = "ABCD EFGH 0023 982";        PriorityQueue<String> strQueue = new PriorityQueue<String>(Arrays.asList(s.split("")));    System.out.println(strQueue);  // [,  ,  , 2,  , 0, 2, 9, 8, H, D, B, 0, E, 3, F, C, A, G]    Iterator<String> strIteator = strQueue.iterator();    while (strIteator.hasNext()) {    System.out.print(strIteator.next() + ","); // , , ,2, ,0,2,9,8,H,D,B,0,E,3,F,C,A,G,}    System.out.println();System.out.println();    while (!strQueue.isEmpty()) {    System.err.print(strQueue.poll() + ","); // , , , ,0,0,2,2,3,8,9,A,B,C,D,E,F,G,H,}    System.out.println();        strQueue = new PriorityQueue<>(s.split("").length, Collections.reverseOrder());    strQueue.addAll(Arrays.asList(s.split("")));    System.out.println(strQueue); // [H, G, D, E, F, 0, A, 9, C, B,  ,  , 0, 2, 3, ,  , 8, 2]    strIteator = strQueue.iterator();    while (strIteator.hasNext()) {    System.out.print(strIteator.next() + ","); // H,G,D,E,F,0,A,9,C,B, , ,0,2,3,, ,8,2,}    System.out.println();    while (!strQueue.isEmpty()) {    System.err.print(strQueue.poll() + ","); //H,G,F,E,D,C,B,A,9,8,3,2,2,0,0, , , ,,}    System.out.println();System.out.println();    }public static void test2(){PriorityQueue<Student> queue = new PriorityQueue<Student>(11,        new Comparator<Student>()         {          public int compare(Student s1, Student s2) {            return s1.grade - s2.grade;          }        });    for (int i = 1; i <= 100; i++){queue.add(new Student("s" + i, (new Random().nextInt(1000))));}System.out.println(queue);while (!queue.isEmpty()){      System.err.print(queue.poll());    }System.out.println();System.out.println();}}class Student {String name;int grade;public Student(String name, int grade){this.name = name;    this.grade = grade;}public String toString() {return "[" + name + " " + grade + "], ";}}

输出结果:

[0, 0, 3, 1, 1, 3, 6, 9, 2, 4]
0,0,3,1,1,3,6,9,2,4,
0,0,1,1,2,3,3,4,6,9,

[9, 4, 6, 1, 3, 2, 3, 0, 0, 1]
9,4,6,1,3,2,3,0,0,1,
9,6,4,3,3,2,1,1,0,0,


[,  ,  , 2,  , 0, 2, 9, 8, H, D, B, 0, E, 3, F, C, A, G]
, , ,2, ,0,2,9,8,H,D,B,0,E,3,F,C,A,G,
, , , ,0,0,2,2,3,8,9,A,B,C,D,E,F,G,H,


[H, G, D, E, F, 0, A, 9, C, B,  ,  , 0, 2, 3, ,  , 8, 2]

H,G,D,E,F,0,A,9,C,B, , ,0,2,3,, ,8,2,

H,G,F,E,D,C,B,A,9,8,3,2,2,0,0, , , ,,


[[s23 17], , [s11 18], , [s49 28], , [s35 135], , [s83 32], , [s99 51], , [s56 68], , [s34 160], , [s36 190], , [s85 35], , [s2 81], , [s15 78], , [s54 186], , [s6 126], , [s62 155], , [s32 491], , [s16 190], , [s74 316], , [s78 307], , [s81 180], , [s8 37], , [s91 131], , [s95 85], , [s26 205], , [s50 297], , [s13 391], , [s27 228], , [s28 481], , [s58 385], , [s61 721], , [s63 573], , [s64 585], , [s33 624], , [s68 356], , [s9 205], , [s73 399], , [s4 366], , [s76 713], , [s19 498], , [s20 234], , [s43 200], , [s41 220], , [s87 129], , [s45 638], , [s89 215], , [s92 611], , [s22 241], , [s25 557], , [s96 484], , [s100 397], , [s51 624], , [s52 462], , [s53 467], , [s3 288], , [s55 542], , [s14 989], , [s57 720], , [s29 705], , [s59 611], , [s60 990], , [s30 961], , [s31 920], , [s7 705], , [s1 938], , [s65 833], , [s66 833], , [s67 862], , [s17 996], , [s69 760], , [s70 230], , [s71 559], , [s72 992], , [s18 668], , [s37 406], , [s75 505], , [s38 886], , [s77 737], , [s39 549], , [s79 582], , [s10 842], , [s80 332], , [s40 708], , [s82 429], , [s84 934], , [s21 800], , [s86 583], , [s42 367], , [s88 983], , [s5 832], , [s44 650], , [s90 356], , [s46 774], , [s93 648], , [s94 766], , [s47 329], , [s48 899], , [s97 690], , [s24 842], , [s98 603], , [s12 830], ]


[s23 17], [s11 18], [s49 28], [s83 32], [s85 35], [s8 37], [s99 51], [s56 68], [s15 78], [s2 81], [s95 85], [s6 126], [s87 129], [s91 131], [s35 135], [s62 155], [s34 160], [s81 180], [s54 186], [s16 190], [s36 190], [s43 200], [s9 205], [s26 205], [s89 215], [s41 220], [s27 228], [s70 230], [s20 234], [s22 241], [s3 288], [s50 297], [s78 307], [s74 316], [s47 329], [s80 332], [s68 356], [s90 356], [s4 366], [s42 367], [s58 385], [s13 391], [s100 397], [s73 399], [s37 406], [s82 429], [s52 462], [s53 467], [s28 481], [s96 484], [s32 491], [s19 498], [s75 505], [s55 542], [s39 549], [s25 557], [s71 559], [s63 573], [s79 582], [s86 583], [s64 585], [s98 603], [s92 611], [s59 611], [s33 624], [s51 624], [s45 638], [s93 648], [s44 650], [s18 668], [s97 690], [s29 705], [s7 705], [s40 708], [s76 713], [s57 720], [s61 721], [s77 737], [s69 760], [s94 766], [s46 774], [s21 800], [s12 830], [s5 832], [s66 833], [s65 833], [s24 842], [s10 842], [s67 862], [s38 886], [s48 899], [s31 920], [s84 934], [s1 938], [s30 961], [s88 983], [s14 989], [s60 990], [s72 992], [s17 996], 


0 0
原创粉丝点击