gpt4 book ai didi

java - java 按日期分组

转载 作者:行者123 更新时间:2023-12-02 08:55:48 26 4
gpt4 key购买 nike

我有一个 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();}

是否有一种“简单”且有效的算法来创建这组日常观察数据?我无法理解它,也不允许使用流进行聚合。非常感谢您的帮助。

最佳答案

数据排序了吗?

如果它已排序,那么您可以对其进行迭代,跟踪日期更改并相应地创建新对象。

如果数据未排序,那么最好的想法可能是创建一个 map ,其中日期是键,DailyObservation 是值。对于每个数据条目,您检查给定日期的 map 中是否已存在对象。

编辑:

对于排序的数据,您可以尝试这样的操作:

public List<DailyObservation> parseObservations(){
List<DailyObservation> results = new ArrayList<>();
DailyObservation current = new DailyObservation();
String[] line;

while((line=readLine()) != null){
String dateString = line[0];
LocalDate localDate = LocalDate.parse(dateString);

if (!localDate.equals(current.getDate())){
current = new DailyObservation();
results.add(current);
}

HourlyObs hourlyObs = new HourlyObs();
//
// assign data from lie to the hourlyObs however you want
//
current.addHourlyObs(hourlyObs);
}
return results;
}

关于java - java 按日期分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60490947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com