Как найти значения min, max и avg из (двойного) ArrayList, чтобы открыть графический интерфейс (график)? - PullRequest
0 голосов
/ 23 декабря 2018

Для полного контекста: это код в классе JFrame / JButton, используемый для открытия данных и представления панели содержимого, которая позволяет пользователю открывать график при нажатии определенной кнопки в нем (так что код находится внутриActionListener).Весь код, связанный с открытием графика (который также относится к отдельному классу), сам по себе работает нормально.

Панель содержимого также позволяет пользователю открывать файл CSV с теми же данными, нажимая переключатель, которыйговорит «CSV» и нажимает на кнопку, помеченную как «Загрузить», еще одна кнопка с надписью «Показать» позволяет размещать данные в этих файлах в текстовой области (AWT).Это уже было сделано без каких-либо проблем.

Поскольку в каждом столбце файлов тысячи строк (в общем, так много данных), мне нужно найти минимум, максимум и средние значения для пары столбцов в них.Столбцы «мм» и «температура» - это два содержимого списка данных в отдельном классе в одном пакете.

JButton btnMinMaxAvg = new JButton("Min/Max/Avg");

   btnMinMaxAvg.addActionListener(new ActionListener() {

       public void actionPerformed(ActionEvent e) {


        ArrayList<Double> mm = new ArrayList<Double>();
        ArrayList<Double> temperature = new ArrayList<Double>();

        for(data f: dataList){
            mm.add(f.getMm());
            temperature.add(f.getTemperature());

            LineChartData l = new LineChartData("Plot Data");
            l.setMm(mm);
                l.setTemperature(Temperature);

            l.plot();

               }

    });
        btnMinMaxAvg.setBounds(315, 65, 89, 23);
        contentPane.add(btnMinMaxAvg);


}

Приведенный выше код просто открывает график, содержащий значения этих столбцов, но яУ нас возникли проблемы с поиском минимальных, максимальных и средних значений.Даже информация относительно одного из них была бы чрезвычайно полезна.Спасибо.

1 Ответ

0 голосов
/ 23 декабря 2018

В Java 8 три строки:

    DoubleSummaryStatistics summaryStatistics = temperature.stream().mapToDouble(Double::doubleValue).summaryStatistics();
    double minTemp = summaryStatistics.getMin();
    double maxTemp = summaryStatistics.getMax();
    double average = summaryStatistics.getAverage();

Вам нужно позвонить mapToDouble(Double::doubleValue), потому что у вас есть List<Double>, но вам это не нужно, если вы создаете Stream напрямую.

...