Mega Code Archive

 
Categories / Java Tutorial / Collections
 

Use a Comparator to create a PriorityQueue for messages

import java.util.Comparator; import java.util.PriorityQueue; enum ProductQuality {   High, Medium, Low } class Product implements Comparable<Product> {   String name;   ProductQuality priority;   Product(String str, ProductQuality pri) {     name = str;     priority = pri;   }   public int compareTo(Product msg2) {     return priority.compareTo(msg2.priority);   } } class MessageComparator implements Comparator<Product> {   public int compare(Product msg1, Product msg2) {     return msg2.priority.compareTo(msg1.priority);   } } public class Main {   public static void main(String args[]) {     PriorityQueue<Product> pq = new PriorityQueue<Product>(3);     pq.add(new Product("A", ProductQuality.Low));     pq.add(new Product("B", ProductQuality.High));     pq.add(new Product("C", ProductQuality.Medium));     Product m;     while ((m = pq.poll()) != null)       System.out.println(m.name + " Priority: " + m.priority);     PriorityQueue<Product> pqRev = new PriorityQueue<Product>(3, new MessageComparator());     pqRev.add(new Product("D", ProductQuality.Low));     pqRev.add(new Product("E", ProductQuality.High));     pqRev.add(new Product("F", ProductQuality.Medium));     while ((m = pqRev.poll()) != null)       System.out.println(m.name + " Priority: " + m.priority);   } }