【问题标题】:Java: Split ResultSet into multiple arrays (based on timestamp)Java:将 ResultSet 拆分为多个数组(基于时间戳)
【发布时间】:2013-11-24 20:04:02
【问题描述】:

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

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

我想创建(在遍历 ResultSet 之前或期间)几个数组,每个数组代表两个时间时间戳之间的范围。 结果集的每个双精度/双精度对都应放入其中一个数组中。

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

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

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

提前感谢您的阅读和任何帮助。

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

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

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

非常感谢,pasha701!

【问题讨论】:

    标签: java arrays split timestamp resultset


    【解决方案1】:
    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;
        }
    }
    

    【讨论】:

    • 很好的方法,非常非常感谢!我不能投票,没有足够的声誉......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2019-07-29
    • 2021-11-03
    • 1970-01-01
    相关资源
    最近更新 更多