【发布时间】:2015-12-10 10:48:58
【问题描述】:
我有以下课程:
public class Book implements Cloneable {
private int ISBN;
private String title;
private String publishDate;
private int pageCount;
}
我可以使用以下代码根据Comparator 进行排序:
Comparator<Book> titleComparator = new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
return o1.title.compareTo(o2.title);
}
};
Comparator<Book> ISBNComparator = new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
return Integer.valueOf(o1.ISBN).compareTo(o2.ISBN);
}
};
public void sort(final String field, ArrayList<Book> BookList) {
final Comparator<Book> comparator;
if (field.equals("title")) {
comparator = titleComparator;
} else if (field.equals("ISBN")) {
comparator = ISBNComparator;
} else {
throw new IllegalArgumentException("Comparator not found for " + field);
}
Collections.sort(BookList, comparator);
}
但是当发布日期格式为“25/12/2015”时,如何根据字符串 publishDate 进行排序?
【问题讨论】:
-
我可以建议您使用更合适的类型开始吗?理想情况下,Java 8 的
LocalDate类型...您正在尝试表示日期...那么为什么要使用字符串? -
您需要以
java.util.Date()格式解析日期,然后进行比较。使用纯字符串值是不正确的。 -
这是一个很好的例子,说明为什么日期不应该是字符串
标签: java date comparator