import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; class Leaderboard { private Map scores = new HashMap<>(); private PriorityQueue displayList = new PriorityQueue<>( (u1, u2) -> u2.getScore() - u1.getScore()); public void addUser(User a) { scores.put(a, a.getScore()); } static Leaderboard obj = new Leaderboard(); private Leaderboard() { } public static Leaderboard getObject() { return obj; } public void updateScore(User user, int points) { int p = user.getScore(); p += points; user.setScore(p); scores.put(user, p); } public void display() { displayList.clear(); System.out.println(); System.out.println("Leaderboard"); System.out.println("--------------------------------"); for (User u : scores.keySet()) { displayList.add(u); } while (!displayList.isEmpty()) { User u = displayList.poll(); System.out.println(u.getUsername() + " --- " + scores.get(u)); } } }