public List<TrainAndTestReportCrisp> computeAvgCTSperM(List<TrainAndTestReportCrisp> reportsCTS) { weightsCrisp.clear(); weightsInterval.clear(); Map<Model, List<TrainAndTestReportCrisp>> mapForAvg = new HashMap<>(); for (TrainAndTestReportCrisp r : reportsCTS) { if (mapForAvg.containsKey(r.getModel())) { mapForAvg.get(r.getModel()).add(r); } else { List<TrainAndTestReportCrisp> l = new ArrayList<>(); l.add(r); mapForAvg.put(r.getModel(), l); } } List<TrainAndTestReportCrisp> avgReports = new ArrayList<>(); for (Model model : mapForAvg.keySet()) { List<TrainAndTestReportCrisp> l = mapForAvg.get(model); if (l.size() == 1) { // does not make sense to compute average over one series // do not compute anything } else { TrainAndTestReportCrisp thisAvgReport = computeAvgCTS(l, model); if (thisAvgReport != null) { avgReports.add(thisAvgReport); } else { // should never happen for the same method System.err.println("nerovnake percenttrain v ramci 1 modelu pri avg CTS per method :/"); } } } return avgReports; }