我在 Java 中有三个日期:a、b、c。任何或所有这些日期都可以为空。在没有大量 if-else 块的情况下,确定 a、b、c 中最早日期的最有效方法是什么?
原文由 Ace 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Java 中有三个日期:a、b、c。任何或所有这些日期都可以为空。在没有大量 if-else 块的情况下,确定 a、b、c 中最早日期的最有效方法是什么?
原文由 Ace 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 8+ 单线。为了安全起见,添加了空检查。传递任意数量的日期。
public static Date min(Date... dates) {
return Arrays.stream(dates).filter(Objects::nonNull).min(Date::compareTo).orElse(null);
}
不安全,但更短:
public static Date min(Date... dates) {
return Collections.min(Arrays.asList(dates));
}
没有新方法就 不是 null 安全 的:
Collections.min(Arrays.asList(date1, date2));
原文由 pavelety 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
没有绕过 null 检查的方法,但是通过一些重构可以让它变得轻松。
创建一个安全地比较两个日期的方法:
然后结合调用:
实际上,您可以将此作为任何
Comparable
的通用方法: