Java Data Structure How to - Sort PriorityQueue








Question

We would like to know how to sort PriorityQueue.

Answer

import java.util.Comparator;
import java.util.PriorityQueue;
/*from ww  w. ja  v a  2  s . co  m*/
public class Main {
  public static void main(String... args) {
    PriorityQueue<Flight> flights = new PriorityQueue<Flight>(5,
        new SortQueueViaPriority());
    flights.add(new Flight("0001", 9));
    flights.add(new Flight("0002", 7));
    flights.add(new Flight("0003", 1));
    flights.add(new Flight("0004", 2));
    flights.add(new Flight("0005", 1));

    while (!flights.isEmpty())
      System.out.println(flights.remove());
  }
}

class SortQueueViaPriority implements Comparator<Flight> {
  @Override
  public int compare(Flight f1, Flight f2) {
    return Integer.compare(f2.getPriority(), f1.getPriority());
  }
}

class Flight {
  private final String name;
  private final int priority;

  Flight(String name, int priority) {
    this.name = name;
    this.priority = priority;
  }

  public int getPriority() {
    return priority;
  }

  @Override
  public String toString() {
    return "Flight{" + "name='" + name + '\'' + ", priority=" + priority + '}';
  }
}

The code above generates the following result.