【发布时间】:2016-09-30 12:15:32
【问题描述】:
我有一个存储 0...4 个日期的 ArrayList。
列表中日期的数量取决于业务逻辑。
如何获取此列表的最早日期?当然,我可以构建迭代循环来最终检索最早的日期。但是有没有一种“更干净”/更快的方法来做到这一点,尤其是考虑到这个列表可以在以后的角度上增长时?
【问题讨论】:
-
@AndyTurner ,您应该发布此评论作为答案。
我有一个存储 0...4 个日期的 ArrayList。
列表中日期的数量取决于业务逻辑。
如何获取此列表的最早日期?当然,我可以构建迭代循环来最终检索最早的日期。但是有没有一种“更干净”/更快的方法来做到这一点,尤其是考虑到这个列表可以在以后的角度上增长时?
【问题讨论】:
java.util.Date 实现了Comparable<Date>,所以你可以简单地使用:
Date minDate = Collections.min(listOfDates);
这依赖于列表中至少有一个元素。如果列表可能为空(在许多其他方法中):
Optional<Date> minDate = listOfDates.stream().min(Comparator.naturalOrder());
【讨论】:
如果您不介意更改插入顺序,则对列表进行排序并获取索引 0 处的元素
【讨论】:
O(n log n) 操作。只需迭代列表即可找到O(n) 中的最小元素。
【讨论】: