您如何处理跨周末和非工作时间的时间序列
||
我正在上一个类,该类将包含带有时间戳和多个度量的对象。这些测量通常在每个工作日的08:00至16:00之间进行,但需要灵活。现在,我希望能够做的是指定一个时间间隔,比如说1小时,然后获取平均值。类似于myArrayList.getAvrageHeight()之类的东西,将返回上一小时所有测量值的平均高度。我计划只在列表中保留所需的条目,并删除那些“超时”的条目。
在同一天内执行此操作非常简单。但是我想,当我在星期二早上08.15调用此方法时,myArrayList将包含从星期一开始的45分钟的数据和从星期二开始的15分钟的数据。
我最大的约束之一是测量以任意间隔进行,从1分钟到每秒多次。
到目前为止,每次添加测量值时我都可以计算平均值:
protected void computeAvrages() {
averageWeight = 0;
averageSpeed = 0;
averageHeight = 0;
for (int i = 0; i < super.size(); i++) {
averageWeight += super.get(i).getWeight();
averageSpeed += super.get(i).getSpeed();
averageHeight += super.get(i).getHeight();
}
averageWeight = averageWeight/super.size();
averageSpeed = averageSpeed/super.size();
averageHeight = averageHeight/super.size();
}
我的对象如下所示:
public class Car {
double weight;
double speed;
double height;
int timeStamp;
public Car(int timeStamp, double weight, double speed, double height) {
this.timeStamp = timeStamp;
this.weight = weight;
this.speed = speed;
this.height = height;
}
public double getWeight() {
return weight;
}
public double getSpeed() {
return speed;
}
public double getHeight() {
return height;
}
public double getTimeStamp() {
return timeStamp;
}
}
myArrayList在timeStamp上按升序排序(我可以在此列表上使用二进制搜索),而我计划保留的记录量将在1.000-> 500.000之间,具体取决于流量(一周内每秒约3辆汽车)时间间隔保持为秒,因此当我指定1小时时,我将其存储为3600。
当我调用myArrayList.add(aCar)时,将调用computeAvrages,但我想知道的是以下内容:
我应该如何处理星期一->星期二以及从星期五到星期一的更改?
为了简便起见,我目前将开始和停止时间存储为startHour,startMinute,stopHour和stopMinute,您将如何存储这些时间参考?
对于stackoverflows问题->答案类型,这个问题可能会很复杂,但是我将尝试使其更简单:
您正在看高速公路。汽车路过。每辆经过的汽车都会记录重量,高度和速度。现在,我希望能够指定一个我感兴趣的时间(即08:00至16:00)。只有在工作周内路过的汽车才是有趣的(又名星期一->星期五),我只存储在此期间路过的汽车,但是我仍然会收到在此时间范围以外路过的汽车的通知。
然后,我想计算我的时间范围内经过的汽车的1小时平均值。但是在星期二的08:15,我对仅获取最后15分钟的平均值并不感兴趣,但是我希望将星期一的最后45分钟的平均值与星期二的前15分钟结合起来。所以我上面的问题适用。
没有找到相关结果
已邀请:
3 个回复
桑娠贯涤
”具有三个属性-“
” 类
具有两个属性-
。 ts的类型为short,范围为0800至1600。该类应具有两个方法-
和
都返回EventTimeStamp的另一个实例。 类
将所有CarEvents保存在
中。 LinkedListMap是Map,它也允许顺序访问,以便您可以执行二进制搜索。映射的键应该是EventTimeStamp的实例 使用此数据结构,您可以在TrafficLog类上实现所需的分析方法。例如,要获得平均值:
纤洞需匪
翱抹村