我有比較字符串,它被轉換爲日期。當我將這個比較器傳遞給Collections.sort()方法時,我得到了java.lang.IllegalArgumentException:比較方法違反了它的一般合約!。IllegalArgumentException對Collections.sort()方法
我已經閱讀了關於這個異常的一些文章,但我不明白爲什麼會出現這個異常。任何想法 ?
private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
try {
Date first = sdf.parse(o1);
Date second = sdf.parse(o2);
return first.compareTo(second);
} catch (Exception ignored) {
return 0;
}
}
};
您的字符串集合可能包含錯誤的格式字符串,您的示例數據是什麼列表? –
STaefi
請添加完整的stacktrace。 o1和o2的值是什麼? – Jens
@Jens解析日期沒有問題,問題在於比較器的邏輯 –