Найти максимальный Y в JavaFX XYSeries - PullRequest
0 голосов
/ 20 декабря 2018
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 голосов
/ 20 декабря 2018

Маловероятно, что вы хотите отсортировать данные, что, вероятно, исказит смысл диаграммы.Вместо этого получите поток данных из требуемой серии и вызовите метод max(), поскольку @fabian предлагает .

Использование данных из 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() series.

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

Консоль:

2.3
2.9
...