我在GWT中有一个CellTable和一个日期列。但此列的单元格可能为空
我想按顺序向这个列添加排序。
如果列完全是空的,我不需要对表进行排序。
我写了比较器
public class RegDateComparator implements Comparator<DocList> {
@Override
public int compare(DocList o1, DocList o2) {
if (o1 == o2) {
return 0;
}
Date date1 = new Date();
Date date2 = new Date();
if (o1 != null) {
DateTimeFormat dateFormat = DateTimeFormat
.getFormat("dd.MM.yyyy");
if (!o1.getRegistrationDate().isEmpty()) {
date1 = dateFormat.parse(o1.getRegistrationDate());
} else {
return -1;
}
if (!o2.getRegistrationDate().isEmpty()) {
date2 = dateFormat.parse(o2.getRegistrationDate());
} else {
return -1;
}
return (o2 != null) ? date1.compareTo(date2) : 1;
}
return -1;
}
}
但是我的代码并没有很好地排序。如果列为空,则排序仍然有效。 帮帮我)谢谢
答案 0 :(得分:0)
我解决了我的问题
public class RegDateComparator implements Comparator<DocList> {
@Override
public int compare(DocList o1, DocList o2) {
if (o1 == o2) {
return 0;
}
DateTimeFormat dateFormat = DateTimeFormat
.getFormat("dd.MM.yyyy");
// Compare the filing date columns.
if (o1 != null) {
Date date1 = dateFormat.parse("01.01.1900");
Date date2 = dateFormat.parse("01.01.1900");
if (!o1.getRegistrationDate().isEmpty()) {
date1 = dateFormat.parse(o1.getRegistrationDate());
}
if (!o2.getRegistrationDate().isEmpty()) {
date2 = dateFormat.parse(o2.getRegistrationDate());
}
return (o2 != null) ? date1.compareTo(date2) : 1;
}
return -1;
}
}
当我只有Date date1 = new Date()
时,date1
包含当前日期,因此它总是大于可能的日期,并且空日期总是在最后,我希望它们在开头。所以我把它解析为&#34; 01.01.1900&#34;。如果你愿意,你可以给我建议来改进我的代码。谢谢!)