5

オブジェクト (が返されます)かどうかListを確認するより良い方法を探しています。シナリオは、ある日付が返され、手元にある日付が返された日付の範囲内にあるかどうかを確認したいと考えています。java.util.DateArrayListListList

現在私がやっていることは、リストをループし、JodaTime を使用して日付を比較することです。

注: 日付を比較するときは、日付部分のみを考慮する必要があります (時間部分ではありません)。

4

2 に答える 2

9

独自のComparatorを作成します。Dateこれを使用して、オブジェクトの個々の比較を実行できます

public class MyDateComparator implements Comparator<Date> {
    protected static final DateFormat DATE_FORMAT = new SimpleDateFormat("dd/MM/yyyy");

    public int compare(Date d1, Date d2) {
        return DATE_FORMAT.format(d1).compareTo(DATE_FORMAT.format(d2));
    }
}


Date myDate = ...
List<Date> listOfDates = ...
Collections.sort(listOfDates);
int index = Collections.binarySearch(listOfDates, myDate, new MyDateComparator());
if (index >= 0) {
  // you found me
}

(太い指で iPad をタイプし、生後 3 か月の子を寝かしつけました。細かい間違いはお詫びします)

于 2012-07-28T04:21:07.350 に答える
1

同じミリ秒に解決される場合、2 つの java.util.Date オブジェクトは equal() です。したがって、List.contains() を使用できます。

http://docs.oracle.com/javase/6/docs/api/java/util/List.html#contains%28java.lang.Object%29 http://docs.oracle.com/javase/6/docs /api/java/util/Date.html#equals%28java.lang.Object%29

List<Date> dates = ...
Date targetDate = ...
if (dates.contains(targetDate)) { ... }

または、リストがソートされていることがわかっている場合は、 Collections.binarySearch() を使用できます

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#binarySearch%28java.util.List,%20java.lang.Object%29

于 2012-07-28T02:01:12.280 に答える