gpt4 book ai didi

Java:将ResultSet拆分为多个数组(基于时间戳)

转载 作者:行者123 更新时间:2023-12-01 13:51:21 24 4
gpt4 key购买 nike

我有一个来自 SQL 查询的结果集。每个 ResultSet 包含一个 Unix-Timestamp 和一个 double 值:

double timeStamp = resultSet.getDouble(1);
double value = resultSet.getDouble(2);

我想创建(在迭代 ResultSet 之前或期间)多个数组,每个数组代表两个时间时间戳之间的范围。结果集的每个 double / double 对都应放入这些数组之一中。

例如,如果最低时间戳为 1366816115,最高时间戳为 1366848754,我想创建时间范围为一小时(60 分钟)的数组,并将每个双/双对放入其中一个数组(提供时间戳)结果集匹配项。

在 Java 中执行此操作的有效方法是什么?我尝试了几种方法,但每次我都开始摆弄它并最终感到困惑。

如果我应该查找某个关键字,我也会很高兴。

预先感谢您的阅读和任何帮助。

编辑:pasha701 答案效果很好,为了完整起见,以下是我计算 periodStart 的方法:

Double key = new Double(timeStamp - (timeStamp % granularityInSeconds));

其中 timeStamp = unix 时间戳(Java 时间戳除以 1000),粒度InSeconds=数组应覆盖的范围,即粒度InSeconds = (60*60) 将创建涵盖一小时的数组。

非常感谢,pasha701!

最佳答案

public void execute ()  {
Map<Double, List<Pair>> arrayMap = new HashMap<Double, List<Pair>>();
while (resultSet.next()) {
double timeStamp = resultSet.getDouble(1);
double value = resultSet.getDouble(2);

Double key = getPeriondStart(timeStamp);
List<Pair> list = arrayMap.get(key);
if (list == null) {
list = new ArrayList<Pair>();
arrayMap.put(key, list);
}
list.add(new Pair(timeStamp, value));
}

// arrayMap contains arrays separated by periods
}

// shrink parameter to Unix-Timestamp period (hour) begining
Double getPeriondStart(double timeStamp) {
return ...;
}

class Pair {
double timeStamp;
double value;

public Pair(double timeStamp, double value) {
this.timeStamp = timeStamp;
this.value = value;
}
}

关于Java:将ResultSet拆分为多个数组(基于时间戳),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933144/

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