Computer >> Máy Tính >  >> Lập trình >> Java

Triển khai PriorityQueue thông qua Comparator trong Java

Để triển khai PriorityQueue thông qua Comparator trong Java, mã như sau -

Ví dụ

import java.util.*;
public class Demo{
   public static void main(String[] args){
      Scanner my_scan = new Scanner(System.in);
      PriorityQueue<Demo_class> my_pq = new PriorityQueue<Demo_class>(3, new demoComparator());
      Demo_class obj_1 = new Demo_class("Joe", 25);
      my_pq.add(obj_1);
      Demo_class obj_2 = new Demo_class("Goldberg", 27);
      my_pq.add(obj_2);
      while (!my_pq.isEmpty()){
         System.out.println(my_pq.poll().getName());
      }
   }
}
class demoComparator implements Comparator<Demo_class>{
   public int compare(Demo_class s1, Demo_class s2){
      if (s1.age < s2.age)
      return 1;
      else if (s1.age > s2.age)
      return -1;
      return 0;
   }
}
class Demo_class{
   public String name;
   public int age;
   public Demo_class(String name, int age){
      this.name = name;
      this.age = age;
   }
   public String getName(){
      return name;
   }
}

Đầu ra

Goldberg
Joe

Một lớp có tên Demo chứa chức năng chính. Ở đây, một đối tượng máy quét mới và một hàng đợi ưu tiên được xác định. Hai phiên bản của lớp Demo được tạo và các phần tử được thêm vào nó.

Hàng đợi ưu tiên được kiểm tra xem nó có trống hay không, và nếu không, hàm thăm dò ý kiến ​​được gọi trên hàng đợi ưu tiên và tên của nó được lấy. Bây giờ, Bộ so sánh được thực hiện bởi một lớp mới được tạo và hàm so sánh so sánh hai giá trị từ hai phiên bản của lớp Demo. Lớp Demo có tên và tuổi. Nó định nghĩa một phương thức khởi tạo và một hàm có tên là ‘getName’ trả về tên đó.