Java PriorityQueue的使用方法

优先级队列 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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值