【问题标题】:How to get the earliest date of a List in Java?如何在Java中获取列表的最早日期?
【发布时间】:2016-09-30 12:15:32
【问题描述】:

我有一个存储 0...4 个日期的 ArrayList。

列表中日期的数量取决于业务逻辑。

如何获取此列表的最早日期?当然,我可以构建迭代循环来最终检索最早的日期。但是有没有一种“更干净”/更快的方法来做到这一点,尤其是考虑到这个列表可以在以后的角度上增长时?

【问题讨论】:

  • @AndyTurner ,您应该发布此评论作为答案。

标签: java date compare


【解决方案1】:

java.util.Date 实现了Comparable<Date>,所以你可以简单地使用:

Date minDate = Collections.min(listOfDates);

这依赖于列表中至少有一个元素。如果列表可能为空(在许多其他方法中):

Optional<Date> minDate = listOfDates.stream().min(Comparator.naturalOrder());

【讨论】:

    【解决方案2】:

    如果您不介意更改插入顺序,则对列表进行排序并获取索引 0 处的元素

    【讨论】:

    • 对列表进行排序是O(n log n) 操作。只需迭代列表即可找到O(n) 中的最小元素。
    【解决方案3】:

    SortedSet

    根据您的应用程序,您可以考虑使用SortedSet(如TreeSet)。这使您可以更改集合并始终轻松接收最低元素。

    不过,向集合中添加元素的成本更高。

    【讨论】:

      猜你喜欢
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2021-06-19
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多