본문 바로가기
자료구조

[자료구조] 우선순위 큐(PriorityQueue) -1

by 코리늬 2018. 11. 2.

우선순위큐도 Queue라는 자료구조의 선입선출 규칙을 따른다.

먼저 들어온 놈이 먼저 나간다.

하지만 JAVA에서 제공하는 우선순위큐는 우선순위를 결정하여 들어온 순서에 상관없이 우선순위가 높은 엘리먼트가 나가게 된다.

예제

class Prisoner {

  String name;
  int weight; // 형량

  public Prisoner(String name, int weight) {
      super();
      this.name = name;
      this.weight = weight;
  }
}

이 클래스는 'name'과 'weight(형량)' 의 2가지 필드가 있다. 이 Prisoner 클래스를 PriorityQueue에 넣고, 형량에 따라 큐에서 나오게 하려한다.

이제 이 Prisoner 클래스에 Comparable 인터페이스를 구현하겠다.


class Prisoner implements Comparable<Prisoner> {

  String name;
  int weight; // 형량

  public Prisoner(String name, int weight) {
      super();
      this.name = name;
      this.weight = weight;
  }

  @Override
  public int compareTo(Prisoner target) {
      if (this.weight > target.weight) {
          return 1;
      } else if (this.weight < target.weight) {
          return -1;
      }
      return 0;
  }
}

Comparable 인터페이스를 구현한 Prisoner 클래스다. 형량이 낮은 Prisoner 객체를 먼저 꺼내기 위해 compareTo 메소드를 오름차순으로 정렬 되도록 구현하였다.

getPriorityQueue 메소드를 구현한다. 5개의 Prisoner 객체를 생성해

PriorityQueue에 넣고 해당 PriorityQueue 객체를 반환한다.

결과

형량이 낮은 thomson부터 출력이 된다.

댓글