当前位置:   article > 正文

java的优先级队列PriorityQueue_priorityqueue q = new priorityqueue<>((a,

priorityqueue q = new priorityqueue<>((a, b) -> b - a);
  1. 介绍
    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。
    一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastException)。

  2. 构造方法:

  1. PriorityQueue() :使用默认的初始容量(11)创建一个优先级队列,并按其自然顺序进行排序
  2. PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器对元素进行排序。

举例:

PriorityQueue<Integer> q = new PriorityQueue<>();
PriorityQueue<Integer> q = new PriorityQueue<>(11,new Comparator<Integer>(){
	@Override
	public int compare(Integer o1,Integer o2){
		return o2 - o1;//逆序
	}
});
或者写成Lambda表达式的形式
PriorityQueue<Integer> q = new PriorityQueue<>((a,b)->b-a);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. 方法摘要
  1. boolean add(E e) 将指定的元素插入此优先级队列。
  2. boolean offer(E e) 将指定的元素插入此优先级队列。
  3. E peek() 获取但不移除此队列的头;如果此队列为空,则返回 null。
  4. E poll() 获取并移除此队列的头,如果此队列为空,则返回 null。
  5. int size() 返回此 collection 中的元素数。
  6. void clear() 从此优先级队列中移除所有元素。
  7. boolean contains(Object o) 如果此队列包含指定的元素,则返回 true。

举例:

public static void main(String[] args) {
        PriorityQueue<Integer> q = new PriorityQueue<>();
        q.add(1);
        q.add(3);
        q.offer(2);
        q.offer(4);
        System.out.println("优先级队列的大小"+q.size());
        System.out.println("优先级队列的顶部"+q.peek());
        System.out.println("遍历优先队列");
        Iterator<Integer> iter = q.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
        System.out.println("获取优先级队列的顶部并弹出"+q.poll());
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/277147
推荐阅读
相关标签
  

闽ICP备14008679号