Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Comparator를 통해 PriorityQueue 구현

<시간/>

Java에서 Comparator를 통해 PriorityQueue를 구현하기 위한 코드는 다음과 같습니다. -

예시

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;
   }
}

출력

Goldberg
Joe

Demo라는 클래스에는 주요 기능이 포함되어 있습니다. 여기에서 새 스캐너 개체와 우선 순위 대기열이 정의됩니다. Demo 클래스의 두 인스턴스가 생성되고 여기에 요소가 추가됩니다.

우선 순위 큐가 비어 있는지 확인하고 비어 있지 않은 경우 우선 순위 큐에서 폴 기능을 호출하여 이름을 얻습니다. 이제 Comparator는 새로 생성된 클래스에 의해 구현되고 비교 기능은 Demo 클래스의 두 인스턴스에서 두 값을 비교합니다. 데모 클래스는 이름과 나이를 받습니다. 생성자와 이름을 반환하는 'getName'이라는 함수를 정의합니다.