2016-03-25 4 views
1

Ich habe eine Klasse mit playerName und Score, ich habe eine ObservableList dieser Klasse in meiner Controller-Klasse erstellt. Spieler und Punkte werden zu diesem Array hinzugefügt. Aber die Frage ist, wie sortiere ich es nach der Punktzahl?Sortierung ObservableList <Class> nach Wert in aufsteigender und absteigender Reihenfolge - JAVAFX

ObservableList<PlayerScore> playerScores = FXCollections.observableArrayList(); 

Dies ist, wie es bisher aussieht:

//stateACS is a toggle button 
if (stateASC.isSelected()) { 
    //Sort in asc order by player score 
    FXCollections.sort(playerScores); 
}else{ 
    //sort in desc order by player score 

} 
+1

Ich verstehe nicht, warum Sie Typ 'Class' verwenden. Kannst du das erklären? –

+0

Es war nur ein Beispiel, der echte Name der Klasse ist PlayerScores. Ich habe die Frage jetzt aktualisiert. –

Antwort

2

Genau auf die gleiche Weise von einem bestimmten Kriterium jede Liste sortieren: Durch ein Comparator, zB:

// assuming there is a instance method Class.getScore that returns int 
// (other implementations for comparator could be used too, of course) 
Comparator<Class> comparator = Comparator.comparingInt(Class::getScore); 
if (!stateASC.isSelected()) { 
    comparator = comparator.reversed(); 
} 
FXCollections.sort(playerScores, comparator); 

BTW: Class ist eine schlechte Wahl für einen Klassennamen, weil des Namens kollidieren mit java.lang.Class.