gpt4 book ai didi

java - 如何按字符串格式的升序和降序对日期的数组列表进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:31 32 4
gpt4 key购买 nike

我有一个字符串格式的日期数组列表,那么我该如何对这个数组列表进行排序,

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);

}

最佳答案

当您需要日期时不要使用字符串。使用日期。您应该只在显示日期时将日期转换为字符串。否则,在代码的任何地方,日期都应该是 Date 类型。这就是允许按时间顺序排序的原因,因为日期具有按时间顺序排列的自然顺序。

因此,一旦 RowItem 有一个 startDate 和一个 endDate,两者都是 Date 类型,您可以使用一个简单的比较器按开始日期对行项目列表进行排序:

Collections.sort(rowItems, new Comparator<RowItem>() {
@Override
public int compare(RowItem r1, RowItem 2) {
return r1.getStartDate().compareTo(r2.getStartDate());
}
});

此外,修复 if/else block 的缩进,因为你的方式确实不可读:

if (aryBeginDate.equals(" ")) {
row.setStartDate(" ");
}
else {
row.setStartDate(aryBeginDate.get(i).toString());
}

关于java - 如何按字符串格式的升序和降序对日期的数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085608/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com