Как мне отсортировать карту (со сложностью O(log(n))
) по идентификатору игрока или имени игрока ??
private static final Map<Integer,Player> PLAYERS= new TreeMap<>();
static {
PLAYERS.put(1, new Player(1, "messi"));
PLAYERS.put(2, new Player(7, "ronaldo"));
PLAYERS.put(3, new Player(3, "neymar"));
PLAYERS.put(4, new Player(4, "iniesta"));
PLAYERS.put(5, new Player(5, "ronaldo"));
PLAYERS.put(6, new Player(2, "pique"));
PLAYERS.put(7, new Player(6, "suarez"));
}
Я сделал этот компаратор, например:
public static Comparator<Player> PlayerNameComparator = new
Comparator<Player>() {
public int compare(Player p1, Player p2) {
String playerName1 = p1.getName().toUpperCase();
String playerName2 = p2.getName().toUpperCase();
return playerName1.compareTo(playerName2);
}
};
но я не знаю, как это исправить:
public static Collection getAllByName() {
Map sortedPlayersByName = new TreeMap(PLAYERS);
Collections.sort(sortedPlayersByName, Player.PlayerNameComparator);
return sortedPlayersByName.values();
}