我有Dates的数组列表,这是String格式,那么我该如何排序这个arraylists,
ArrayList<String> aryBeginDate;
ArrayList<String> aryDueDate;
for (int i = 0; i < arySubject.size(); i++) {
RowItem row = new RowItem();
row.setSubject(arySubject.get(i).toString());
row.setUser(aryFromUser.get(i).toString());
if (aryBeginDate.equals(" ")) {
row.setStartDate(" ");
} else {
row.setStartDate(aryBeginDate.get(i).toString()); \\Have to sort at this line
}
if (aryDueDate.equals(" ")) {
row.setEndDate(" ");
} else {
row.setEndDate(aryDueDate.get(i).toString()); \\Have to sort at this line
}
aryListBean.add(row);
}
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 12
如果需要日期,请不要使用字符串.使用日期.您应该只在显示日期时将日期转换为字符串.否则,代码中的任何位置,日期都应为Date类型.这是允许按时间顺序排序的原因,因为日期具有按时间顺序排列的自然顺序.
因此,一旦RowItema startDate和a endDate都是类型Date,您可以使用简单的比较器按开始日期对行项列表进行排序:
Collections.sort(rowItems, new Comparator<RowItem>() {
@Override
public int compare(RowItem r1, RowItem 2) {
return r1.getStartDate().compareTo(r2.getStartDate());
}
});
Run Code Online (Sandbox Code Playgroud)
另外,修复if/else块的缩进,因为你的方式真的不可读:
if (aryBeginDate.equals(" ")) {
row.setStartDate(" ");
}
else {
row.setStartDate(aryBeginDate.get(i).toString());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44075 次 |
| 最近记录: |