PriorityQueue详解

原创
2019/10/12 21:34
阅读数 144

PriorityQueue使用跟普通队列一样,唯一区别是PriorityQueue会根据排序规则决定谁在队头,谁在队尾。
往队列中添加可比较的对象String :

import java.util.PriorityQueue;

public class Main {
    public static void main(String[] args) {
        PriorityQueue<Integer> q = new PriorityQueue<Integer>();
        //入列
        q.add(3);
        q.add(5);
        q.add(10);
        q.add(7);
        q.add(9);
        q.add(15);
        q.add(11);
        q.add(13);
        q.add(20);
        q.add(12);

        //出列
        System.out.println(q.poll());  //1
        System.out.println(q.poll());  //2
        System.out.println(q.poll());  //3
        System.out.println(q.poll());  //4
        System.out.println(q.poll());  //5
        System.out.println(q.poll());  //1
        System.out.println(q.poll());  //2
        System.out.println(q.poll());  //3
        System.out.println(q.poll());  //4
        System.out.println(q.poll());  //5

    }
}

观察打印结果,也是说出列时做了相关判断,将最小的值返回。默认情况下PriorityQueue使用自然排序法,最小元素先出列。

我们画一个图去演示查看一下:

在idea中调试去查看变量信息:

堆的数组存储要去掌握的,在idea编辑器中的存储与实际画图的数组结构相同的。

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部