我需要比较属性"日期";ArrayList中包含的对象的数目。包括在ArrayList中的对象是";书籍"每本书都有发行日期。日期以字符串格式给出。
public ArrayList<Book> group;
我所做的是:
public static Comparator<Book> ComparaisonDate = new Comparator<Book>() {
SimpleDateFormat data = new SimpleDateFormat("dd/mm/yyyy");
@Override
public int compare(Book l1, Book l2) {
try {
return data.parse(l1.launchingDate).compareTo(data.parse(l2.launchingDate));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
};
public void sort(int option) {
Collections.sort(this.group, Book.ComparaisonDate);
}
当我添加两本日期为:2020年8月1日和2020年5月12日的书时,sort((函数的结果是:
01/08/2020
12/05/2020
结果应该是:12/05/2020
,然后是01/05/2020
。据我所见,它只比较日期,而不是月份或年份。你知道怎么解决这个问题吗?感谢
模式中的mm
代表小时的分钟数,因此排序实际上是正确的。你需要MM
。看见https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html有效模式。