我有8个不同变量名的日期变量(java.util.Date)。选择这些日期中最近(最大)的日期,最高效/最佳的方式是什么?
我有8个不同变量名的日期变量(java.util.Date)。选择这些日期中最近(最大)的日期,最高效/最佳的方式是什么?
理想情况下,将它们存储在一个集合中——这在你的程序设计方面可能是有意义的。如果你有一个List对象,你可以这样做:
Collections.max(dates);
Collections.max
方法。Date
是可比较的,因此将它们全部添加到一个列表中,然后使用Collections.max()
找到最大(最新)日期:
List<Date> dates = new ArrayList<Date>();
dates.add(foo);
dates.add(bar);
... etc
Date latest = Collections.max(list);
public static <T extends Comparable<T>> T max(T... items) {
return Collections.max(Arrays.asList(items));
}
这样调用:
Date latest = MyClass.max(foo, bar, fred);
但它也适用于任何Comparable
:
Integer biggest = MyClass.max(3, 7, 4, 1);
由于您将所有日期存储在不同的变量中,因此需要执行以下可变参数函数,并将所有变量传递给它:
protected Date getMostRecentDate(Date ... dates) {
Arrays.sort(dates);
return myDateArray[dates.length - 1];
}
Date mostRecent = getMostRecentDate(date1, date2, date3 /* etc.*/);
PriorityQueue<Date> dateQ = new PriorityQueue<Date>();
dateQ.add(someDate);
dateQ.add(anotherDate);
dateQ.add(thirdDate); // etc...
System.out.println("Max date is: " + dateQ.peek());