在JavaFX XYSeries中找到最大Y

时间:2018-12-20 10:11:12

标签: java javafx javafx-8

series.getData().add(new XYChart.Data(x ,function(x));

我尝试获得最大的函数(x);我知道我可以使用“ series.getData()。sort”

但是当我写

series.getData().sort(Comparator.comparingDouble(d -> d.getYValue().doubleValue()));

它说无法解决方法getYValue; 如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不太可能希望对数据进行排序,这可能会扭曲图表的含义。而是从所需的序列中获取数据流,并以@fabian max()的身份调用suggests方法。

ensemble.samples.charts.line.chart.LineChartApp中的数据为例,

ObservableList<XYChart.Series<Double, Double>> lineChartData = FXCollections.observableArrayList(
    new LineChart.Series<>("Series 1", FXCollections.observableArrayList(
        new XYChart.Data<>(0.0, 1.0),
        new XYChart.Data<>(1.2, 1.4),
        new XYChart.Data<>(2.2, 1.9),
        new XYChart.Data<>(2.7, 2.3), //max
        new XYChart.Data<>(2.9, 0.5))),
    new LineChart.Series<>("Series 2", FXCollections.observableArrayList(
        new XYChart.Data<>(0.0, 1.6),
        new XYChart.Data<>(0.8, 0.4),
        new XYChart.Data<>(1.4, 2.9), //max
        new XYChart.Data<>(2.1, 1.3),
        new XYChart.Data<>(2.6, 0.9)))
    );

以下片段产生了预期的输出forEach()系列。

lineChartData.forEach((series) -> {
    System.out.println(series.getData().stream().max(
        Comparator.comparing(XYChart.Data::getYValue)).get().getYValue());
});

控制台:

2.3
2.9