根据它包含的 long "curTime" class 字段将 N 的列表拆分为 24(小时)

Split a list of N into 24(for hours) based on the long "curTime" class field it contains

我有一个大小为 N 的数组列表,其中包含一个 class,其中存储了基于系统毫秒的时间。我想遍历整个 arrayList 并将其分成一小时的块。只能是从现在开始往前24小时过去的24小时。不过,可能有些项目在过去 24 小时内丢失 window。

我不敢相信我在问关于 SO 的算法问题。感谢您的帮助。

大型 arrayList 基本上由以下项目组成:

public class Item {
  private long date;
  private long otherData;
}

我使用以下方法在项目中保存日期:

System.currentTimeMillis()

同样,我想根据在保存时使用 currentTimeMillis() 的 "save date" 将项目数组列表拆分为 24 个单独的项目数组列表。

如果 first/newest/most 最近的存储桶恰好在下一个小时标记结束,然后每隔一小时结束,那就更酷了。换句话说,如果我在 7:25PM 处发出请求...如果第一个项目 "bucket" 仅包含在过去 25 分钟内保存的条目,那就太棒了。然后,接下来的 23 "bucket of Items" 在小时(6:00PM,5:00PM...)被分解。

再次感谢。

分解块的一种方法是将时间转换为日历并检查 HOUR_OF_DAY。创建一个与存储桶项目的 arrayList 相对应的小时 HashMap,然后简单地循环并将它们放入相应的列表中。

我会将当前系统时间转换为 DateCalendar 对象。使用它我可以获得当前小时的分钟数。然后我可以回到小时的开始,并在每个小时内迭代。您可以使用 myDate.getTime()new Date(milliseconds)

轻松地在 Datemilliseconds 之间切换

算出每个部分需要多少毫秒并减去。