У меня есть csv-файл с примерно 500k наблюдениями формата «дата (LocalDate); час; значение; тип». Я должен выполнять операции с этими данными, такие как поиск средних значений, подсчет пропущенных значений, тип значения для интервала дат.
Я могу строить объекты почасового наблюдения, просматривая список строк:
new HourlyObs(date,hour,val,type);
Эти наблюдения проводятся ежечасно (хотя не 24 наблюдений в день, так как некоторые данные отсутствуют), но я думаю, что это было бы легче сгруппировать их по дате, а затем выполнить несколько бинарных поисков, учитывая функциональность, которую я должен был реализовать.
Поэтому я хотел создать массив объектов, где объекты спроектированы следующим образом:
class DailyObservation {
private LocalDate date;
private ArrayList<HourlyObs>;
public float avgVal();
public int missingVals();
public float nrOfType();}
Существует ли «простой» и эффективный алгоритм для создания этого массива ежедневных наблюдений ? Я не могу обернуть голову вокруг этого, и мне не разрешено использовать потоки для агрегирования. Заранее большое спасибо за помощь.