【问题标题】:Java Calendar - Query number of unique dates in an ArrayListJava Calendar - 查询 ArrayList 中唯一日期的数量
【发布时间】:2015-02-04 22:35:21
【问题描述】:

我在一个如下所示的数组列表中有以下日期(日期对象):

日期:2015 年 1 月 25 日星期日 11:45:05 EST

日期:2015 年 1 月 25 日星期日 11:46:05 EST

日期:2015 年 1 月 25 日星期日 11:47:14 EST

日期:2015 年 1 月 24 日星期六 11:48:59 EST

日期:2015 年 1 月 24 日星期六 11:50:32 EST

日期:2015 年 1 月 23 日星期五 11:52:01 EST

日期:2015 年 1 月 23 日星期五 11:53:29 EST

日期:2015 年 1 月 23 日星期五 11:55:16 EST

日期:2015 年 1 月 21 日星期三 11:58:48 EST

我希望能够获得等于 2015 年 1 月 25 日、2015 年 1 月 23 日等等的所有天数。我也必须在这里使用年份,因为显然年份可能不同,所以我无法查看月份和日期。目前我正在使用日历 DAY_OF_YEAR 和 YEAR。

为了使事情更高效,最好在循环中执行此操作,只要我在 Arraylist 中有数据,我会要求第一个并说:“找到我的所有日​​期与这个 DAY_OF_YEAR 和 YEAR” ,给我那个计数,然后删除那些,然后从头再来,直到数组列表为空。”

有没有办法在不编写自定义解决方案的情况下做到这一点?

【问题讨论】:

  • “天数”似乎是一个不完整的句子。你是说从那时到现在?
  • 对不起,我的意思是“所有天数相等”..所以在这个小数据集中,我看到 2015 年 1 月 25 日的次数为 3,2015 年 1 月 24 日的次数为 2等等……
  • 为什么不能循环遍历日期列表并创建计数图?对于第一次出现的日期,创建一个计数为 1 的新计数映射实例。对于后续出现的日期,增加计数。
  • 因为如果我只是比较日期,则没有一个日期是相等的。例如,由于时间的原因,1 月 25 日的所有日期实际上都不同。如果我这样做了,我每个项目只会出现 1 次,因为时间是差异化因素。

标签: java date arraylist calendar


【解决方案1】:

你想要的是 JodaTime 的LocalDate。将您的列表转换为列表,然后比较是否相等。

【讨论】:

  • 它是否仍然适用于所有其他 Date 对象,因为我还有其他代码,其中很多无法转换为 JodaTime..
  • 嗯,来回转换相对容易。有一个toDate 方法:joda-time.sourceforge.net/apidocs/org/joda/time/…
  • 好的。我只是想到了另一种可能处理这个问题的方法。与其将 Date 对象放在我的 ArrayList 中,不如从每个日期(使用我已经使用的 Calendar 对象)获取年中的日期和年份,将每个对象转换为字符串..然后使用 Collection 以这种方式检查该字符串的出现。频率
猜你喜欢
  • 2021-10-06
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多