7

変数名が異なる約 8 つの日付変数 (java.util.Date) があります。これらの日付の最新 (最大) を選択する最も効率的/最良の方法は何ですか?

4

5 に答える 5

22

理想的には、それらをコレクションに保存します - とにかく、これはプログラム設計の観点からは理にかなっているかもしれません。たとえば List オブジェクトがある場合は、次のことができます。

Collections.max(dates);
于 2012-04-12T17:15:37.800 に答える
6

それらをリストに入れて使用しますCollections.max

于 2012-04-12T17:15:40.190 に答える
4

すべての日付を異なる変数に保存しているため、次の varargs 関数のようなことを行い、すべての変数をそれに渡す必要があります。

protected Date getMostRecentDate(Date ... dates) {
    Arrays.sort(dates);
    return myDateArray[dates.length - 1];
}

次に、次のように呼び出します。

Date mostRecent = getMostRecentDate(date1, date2, date3 /* etc.*/);
于 2012-04-12T17:15:57.000 に答える
3

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);
于 2012-04-12T17:15:20.560 に答える
1

それらをすべてコレクションに追加してから並べ替えるか、PriorityQueue などの最初に順序付けされたコレクションに追加します。

PriorityQueue<Date> dateQ = new PriorityQueue<Date>();
dateQ.add(someDate);
dateQ.add(anotherDate);
dateQ.add(thirdDate); // etc...
System.out.println("Max date is: " + dateQ.peek());
于 2012-04-12T17:16:37.580 に答える