您可以創建一個Comparator
,由Y值進行比較,然後再顛倒順序:
data.sort(Comparator.comparing(XYChart.Data<String,Double>::getYValue).reversed());
這將整理您的收藏作爲intented 。
或者你可以返回一個新的集合:
List<XYChart.Data<String,Double>> sortedData =
data.stream()
.sorted(Comparator.comparing(XYChart.Data<String,Double>::getYValue).reversed())
.collect(Collectors.toList());
編輯
爲了清楚起見,這是一個完整的示例:
public class FXMain extends Application {
private final ObservableList<XYChart.Data<String,Double>> data =
FXCollections.observableArrayList(
new XYChart.Data("P1",200d),
new XYChart.Data("P2",150d),
new XYChart.Data("P3",250d));
@Override
public void start(Stage primaryStage) {
Button btn = new Button"Sort data!");
btn.setOnAction(e -> {
ObservableList<XYChart.Data<String,Double>> data2 =
data.stream()
.sorted(Comparator.
comparing(XYChart.Data<String,Double>::getYValue).reversed())
.peek(System.out::println)
.collect(Collectors.toCollection(()->FXCollections.observableArrayList()));
});
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
的http://計算器。 com/a/26508466/2715404 這是我的數據結構btw。 – miniHessel 2014-10-28 22:14:51
您應該爲'Data'指定參數的類型:'private final ObservableList> data'。 –
2014-10-28 22:19:28
但隨後「.collect(Collectors.toCollection(() - > FXCollections.observableArrayList()));」失敗 – miniHessel 2014-10-28 22:23:10