// understandingcollections/ToDoList.java // (c)2016 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://mindviewinc.com/Books/OnJava/ for more book information. // A more complex use of PriorityQueue import java.util.*; class ToDoList extends PriorityQueue { static class ToDoItem implements Comparable { private char primary; private int secondary; private String item; public ToDoItem(String td, char pri, int sec) { primary = pri; secondary = sec; item = td; } @Override public int compareTo(ToDoItem arg) { if(primary > arg.primary) return +1; if(primary == arg.primary) if(secondary > arg.secondary) return +1; else if(secondary == arg.secondary) return 0; return -1; } @Override public String toString() { return Character.toString(primary) + secondary + ": " + item; } } public void add(String td, char pri, int sec) { super.add(new ToDoItem(td, pri, sec)); } public static void main(String[] args) { ToDoList toDoList = new ToDoList(); toDoList.add("Empty trash", 'C', 4); toDoList.add("Feed dog", 'A', 2); toDoList.add("Feed bird", 'B', 7); toDoList.add("Mow lawn", 'C', 3); toDoList.add("Water lawn", 'A', 1); toDoList.add("Feed cat", 'B', 1); while(!toDoList.isEmpty()) System.out.println(toDoList.remove()); } } /* Output: A1: Water lawn A2: Feed dog B1: Feed cat B7: Feed bird C3: Mow lawn C4: Empty trash */