PriorityQueue comparator() trả về một comparator dùng dể sắp xếp các phần tử trong PriorityQueue. Phương thức này hữu dụng khi chúng ta muốn chia sẽ cách sắp xếp của PriorityQueue này cho PriorityQueue khác. comapator() sẽ trả về null nếu PriorityQueue hiện tại đang sử dụng comparator tự nhiên.
Syntax
public Comparator<? super E> comparator()
Parameter: Không có tham số đầu vào.
Return: Comparator sử dụng để sắp xếp các phần tử, trả về null nếu sử dụng Comparator mặc định.
Ví dụ: PriorityQueue sử dụng comparator mặc định.
import java.util.Comparator; import java.util.PriorityQueue; public class Main { public static void main(String args[]) { PriorityQueue<Integer> queue = new PriorityQueue<>(); // Adding elemetns to the queue queue.add(20); queue.add(24); queue.add(30); // Creating a comparator Comparator comp = queue.comparator(); // Displaying the comparator values System.out.println("Comparator value is: " + comp); } }
Output: Comparator value is: null
Ví dụ 2: Custom Comparator, Sử dụng comparator của PriorityQueue khác.
import java.util.Comparator; import java.util.PriorityQueue; public class Main { public static void main(String args[]) { PriorityQueue<Integer> queue = new PriorityQueue<>(Comparator.comparingInt(o -> o)); // Adding elemetns to the queue queue.add(20); queue.add(24); queue.add(30); // Creating a comparator Comparator comp = queue.comparator(); System.out.println("Comparator value is: " + comp); System.out.println(queue); // Displaying the comparator values PriorityQueue<Integer> queue1 = new PriorityQueue<>(comp); queue1.add(100); queue1.add(500); System.out.println(queue1); } }
Output:
Comparator value is: java.util.Comparator$$Lambda$2/1072408673@6f496d9f
[20, 24, 30]
[100, 500]