我正在寻找一种更好的方法来检查是否有 aList
个java.util.Date
对象(ArrayList
返回给我)。情况是,我返回了一个List
日期,我想知道我手头List
的日期是否在我返回的日期之内。
目前我正在做的是循环列表并使用 JodaTime 比较日期。
注意:在比较日期时只应考虑日期部分(而不是时间部分)。
编写自己的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 个月大的宝宝睡觉,为小错误道歉)
如果两个 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()