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()); } }