Warum werden die Namen nicht richtig Sortiert?
Hallo,
in dem folgendem Code Java will ich das verschiedene <OfflinePlayer> nach ihrem Namen sortiert werden, jedoch funktioniert nicht.
Bis vor kurzem kannte ich den Comparator noch garnicht, ich meine jedoch das das funktionieren sollte.
Meine Frage ist also ob jemand einen Fehler erkennen kann.
Vielen Dank im vorraus!
Code:
List<OfflinePlayer> players = new ArrayList<>();
players.add(Bukkit.getOfflinePlayer(UUID.fromString("UUID")));
players.add(Bukkit.getOfflinePlayer(UUID.fromString("UUID")));
players.add(Bukkit.getOfflinePlayer(UUID.fromString("UUID")));
players.sort(playerNameComparator);
private static final Comparator<OfflinePlayer> playerNameComparator = new Comparator<OfflinePlayer>() {
@Override
public int compare(OfflinePlayer player1, OfflinePlayer player2) {
return player1.getName().compareTo(player2.getName());
}
};
2 Antworten
jedoch funktioniert nicht.
Was heißt "funktioniert nicht"? Was erwartest du, was passiert stattdessen?
Der Code schaut auf den ersten Blick korrekt aus, wenn auch extrem umständlich - das ist Java wie in ganz alten Zeiten. Denselben Effekt erzielst du mit:
players.sort(Comparator.comparing(OfflinePlayer::getName));
Oder, wenn du case-insensitive sortieren willst:
players.sort(Comparator.comparing(player -> player.getName().toLowerCase()));
Hatte die andere Weise im Internet gefunden, wusste nicht das das auch kürzer geht. Danke für die Antwort^^
Sieht für mich strukturell okay aus, auch wenn ich kein Javaianer bin. Eventuell beschreibst Du mal, was bei der Sortierung falsch läuft. Bedenke aber, daß Groß- und Kleinbuchstaben unterschieden werden und ggf. die locale berücksichtigt wird.