【发布时间】:2019-03-11 22:18:31
【问题描述】:
我有一个 HashBasedTable (com.google.common.collect.HashBasedTable),格式如下:Table<DateTime, C, V>。 DateTime 来自org.joda.time.DateTime。
我想根据特定的时间间隔对条目进行分组。例如,如果条目 A 和 B 彼此相差 100 毫秒,我想将它们组合在同一行上。我可以选择在处理过程中插入以及插入后执行此操作。我应该如何以最有效的方式做到这一点?
参考链接:
https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/HashBasedTable.html
https://www.joda.org/joda-time/apidocs/org/joda/time/DateTime.html
【问题讨论】:
-
“在 100 毫秒内” 如果时间是
6080 ms、6150 ms和6220 ms? #1 和#2 相距100ms 以内,#2 和#3 相距100ms 以内,但#1 和#3 相距100ms 以上。它们应该如何分组? -
通常,您不会将“彼此相距 100 毫秒”分组,而是创建 100 毫秒宽的时隙,方法是将时间截断到 100 毫秒的边界,然后在
Map<DateTime, List<V>>中收集数据,所以落入同一时间段的所有值都将添加到该时间段的列表中。 -
@ole-v-v:
Tabletype:com.google.common.collect.HashBasedTableandDateTimetype:org.joda.time.DateTime解决第一条评论@andreas: 在插入6150时,我会将它与@分组987654336@,对于6220,因为相对于第一组 (6080) 超过 100 毫秒,我会将其分开。要解决第二条评论@andreas:是的,这听起来像是一种更合理的方法。假设我可以将其四舍五入到最接近的 100 毫秒。 -
使用 Joda-Time 是固定要求吗?询问是因为 Joda-Time 已被现代 Java 日期和时间 API java.time 取代。
标签: java algorithm datetime grouping hashtable