Date,Locality,District,New Cases,Hospitalizations,Deaths
5/21/2020,Accomack,Eastern Shore,709,40,11
5/21/2020,Albemarle,Thomas Jefferson,142,19,4
5/21/2020,Alleghany,Alleghany,9,4,0
5/21/2020,Amelia,Piedmont,22,7,1
5/21/2020,Amherst,Central Virginia,25,3,0
5/21/2020,Appomattox,Central Virginia,25,1,0
5/21/2020,Arlington,Arlington,1763,346,89
... // skipped down to the next day
5/20/2020,Accomack,Eastern Shore,709,39,11
5/20/2020,Albemarle,Thomas Jefferson,142,18,4
5/20/2020,Alleghany,Alleghany,10,4,0
5/20/2020,Amelia,Piedmont,21,7,1
5/20/2020,Amherst,Central Virginia,25,3,0
5/20/2020,Appomattox,Central Virginia,24,1,0
5/20/2020,Arlington,Arlington,1728,334,81
5/20/2020,Augusta,Central Shenandoah,88,4,1
... // continued
У меня есть данные для штата в США, подобные приведенному выше, в CSV-файле, и я хотел бы провести некоторый анализ данных, чтобы я мог отправить их через API отдыха. Анализ данных, который я хотел бы провести, представляет собой различные агрегаты, такие как: общее количество случаев по штату по дате, общее количество случаев для всего штата, общее количество случаев, сгруппированных по округам, общее количество случаев для района по дате, общее количество случаев для округа. по дате, et c. Просто все основные c groupby, которые можно было сделать с этими данными.
Теперь моя проблема состоит в том, чтобы выяснить, как правильно хранить эти данные в java без базы данных. У меня есть одна успешная реализация с использованием списка объектов Row, где каждый объект Row
содержит только одну строку в CSV. Затем, используя java s Stream api
, я смог отфильтровать и получить некоторые из этих статистических данных. Затем я упаковываю эту статистику в один объект Row
или List<Row>
и отправляю в API для анализа в JSON. Это сработало нормально, но я считаю, что это не лучший способ.
Есть ли другой, более объектно-ориентированный способ использования столбца Date
, District
, County
, Cases
.
Я думал сделать что-то вроде этого:
class State {
List<District> districtList;
String name;
}
class District {
List<County> countyList;
String name;
}
class County {
LocalDate date;
String name;
int cases;
// more stuff
}
Затем я бы создал один State
объект со списком District
объектов, каждый со списком из многих County
объекты, по одному на дату.
Это кажется излишним? Есть ли другой чистый способ чтения этого набора данных в структуру данных, которая позволяет легко агрегировать сводную информацию.
То, как я сейчас это делаю, теперь работает, но я ищу способ получше!