按升序和降序按值对 ObservableList<Class> 进行排序 - JAVAFX
Sorting ObservableList<Class> by value in ascending and descending order - JAVAFX
我有一个 Class,它有 playerName 和 Score,我在我的控制器 class 中创建了这个 class 的 ObservableList。球员和分数被添加到这个数组中。但问题是如何根据分数排序呢?
ObservableList<PlayerScore> playerScores = FXCollections.observableArrayList();
目前情况如下:
//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
}
您可以通过实现 Comparator 然后将 sort 方法与 Comparator 实例一起使用来对数组进行排序。
与您按给定标准对任何列表进行排序的方式相同:使用 Comparator
,例如:
// 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);
顺便说一句:Class
不适合作为 class 名称,因为名称与 java.lang.Class
冲突。
我有一个 Class,它有 playerName 和 Score,我在我的控制器 class 中创建了这个 class 的 ObservableList。球员和分数被添加到这个数组中。但问题是如何根据分数排序呢?
ObservableList<PlayerScore> playerScores = FXCollections.observableArrayList();
目前情况如下:
//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
}
您可以通过实现 Comparator 然后将 sort 方法与 Comparator 实例一起使用来对数组进行排序。
与您按给定标准对任何列表进行排序的方式相同:使用 Comparator
,例如:
// 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);
顺便说一句:Class
不适合作为 class 名称,因为名称与 java.lang.Class
冲突。