Java 中的逆序优先队列
原文:https://www . geesforgeks . org/priority-queue-in-reverse-in-Java/
当根据优先级应该处理对象时,使用优先级队列。众所周知队列遵循先进先出算法,但有时需要根据优先级处理队列的元素,这就是优先级队列的作用。优先级队列基于优先级堆。优先级队列的元素根据自然顺序进行排序,或者由队列构建时提供的比较器进行排序,具体取决于使用的构造器。
申报:
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
其中 E 是该队列中保存的元素类型
优先级队列的类型
- 最大优先级队列
- 最小优先级队列
默认优先级队列示例
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate the
// working of default PriorityQueue
import java.util.*;
class PriorityQueueDemo {
// Main Method
public static void main(String args[])
{
// Creating empty priority queue
PriorityQueue<Integer> pQueue
= new PriorityQueue<Integer>();
// Adding items to the pQueue using add()
pQueue.add(10);
pQueue.add(20);
pQueue.add(15);
pQueue.add(5);
// Printing the top element of PriorityQueue
System.out.println(pQueue.peek());
// Printing the top element and removing it
// from the PriorityQueue container
System.out.println(pQueue.poll());
// Printing the top element again
System.out.println(pQueue.peek());
}
}
Output
5
5
10
在 Java 中,优先级队列默认实现最小优先级队列,如果我们需要将优先级队列的顺序从最小更改为最大优先级队列,那么我们使用如下方法:
- 使用默认的比较器集合
- 使用自定义比较器
- 使用λ表达式
方法 1: 使用默认比较器集合. reverseOrder()
collections . reverse order()方法用于获取默认比较器的反向行为。这是 java.util 包 中的一个默认比较器。
例:
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate the
// working of PriorityQueue in reverse order
import java.util.*;
class PriorityQueueDemo {
// Main Method
public static void main(String args[])
{
// Creating empty priority queue
PriorityQueue<Integer> pQueue
= new PriorityQueue<Integer>(
Collections.reverseOrder());
// Adding items to the pQueue using add()
pQueue.add(10);
pQueue.add(20);
pQueue.add(15);
pQueue.add(5);
// Printing the top element of PriorityQueue
System.out.println(pQueue.peek());
// Printing the top element and removing it
// from the PriorityQueue container
System.out.println(pQueue.poll());
// Printing the top element again
System.out.println(pQueue.peek());
}
}
Output
20
20
15
版权属于:月萌API www.moonapi.com,转载请注明出处