The java.util.PriorityQueue.comparator() method shares an important function of setting and returning the comparator that can be used to order the elements in a PriorityQueue. The method returns a null value if the queue follows the natural ordering pattern of the elements.
Syntax:
comp_set = (PriorityQueue)Priority_Queue.comparator()
Parameters: The method does not take any parameters.
Return Value: The method returns the comparator used to order the elements of the queue in a specific order. It returns a Null value if the queue follows the default or natural ordering pattern.
Below programs illustrate the java.util.PriorityQueue.comparator() method:
Program 1: When using natural ordering of the elements:
Java
// Java code to illustrate comparator() import java.util.*; public class Priority_Queue_Demo { public static void main(String[] args) { // Creating an empty Priority_Queue PriorityQueue<Integer> queue = new PriorityQueue<Integer>(); // Adding elements to the queue queue.add( 20 ); queue.add( 24 ); queue.add( 30 ); queue.add( 35 ); queue.add( 45 ); queue.add( 50 ); System.out.println( "Priority queue values are: " + queue); // Creating a comparator Comparator comp = queue.comparator(); // Displaying the comparator values System.out.println( "Since the Comparator value is: " + comp); System.out.println( "it follows natural ordering" ); } } |
Priority queue values are: [20, 24, 30, 35, 45, 50] Since the Comparator value is: null it follows natural ordering
Program 2: When using a specific comparator.
Java
// Java code to illustrate the use of comparator() import java.util.Comparator; import java.util.PriorityQueue; class The_Comparator implements Comparator<String> { public int compare(String str1, String str2) { String first_Str; String second_Str; first_Str = str1; second_Str = str2; return second_Str.compareTo(first_Str); } } public class Priority_Queue_Demo { public static void main(String[] args) { PriorityQueue<String> queue = new PriorityQueue<String>( new The_Comparator()); queue.add( "G" ); queue.add( "E" ); queue.add( "E" ); queue.add( "K" ); queue.add( "S" ); queue.add( "4" ); System.out.println( "The elements with the highest priority element at front of queue" + "order:" ); while (!queue.isEmpty()){ System.out.print( " " +queue.poll()); } } } |
The elements with the highest priority element at front of queueorder: S K G E E 4