import java.time.*;
import java.util.*;
enum Priority {HIGH, MEDIUM, LOW};
record Task(String description, LocalDate dueDate, Priority priority) { }
public class Main {
static Comparator<Task> priorityComparator = new Comparator<>() {
public int compare(Task t1, Task t2) {
return t1.priority().compareTo(t2.priority());
}
};
public static void main(String[] args) {
Map<Priority, ArrayDeque<Task>> taskMap = new EnumMap<>(Priority.class);
for (Priority p : Priority.values()) {
taskMap.put(p, new ArrayDeque<>());
}
taskMap.get(Priority.HIGH).add(new Task("Birthday party", LocalDate.parse("2019-09-02"), Priority.HIGH));
taskMap.get(Priority.MEDIUM).add(new Task("Doctor appointment", LocalDate.parse("2019-11-18"), Priority.MEDIUM));
taskMap.get(Priority.HIGH).add(new Task("Book hotel", LocalDate.parse("2019-07-15"), Priority.MEDIUM));
Queue<Task> highPriorityTaskList = taskMap.get(Priority.HIGH);
System.out.println("Next high priority task: " + highPriorityTaskList.peek());
}
}