Java Collections.sort()但从右向左读取
我有一个名为Dates的arrayList,如下所示:Java Collections.sort()但从右向左读取,java,Java,我有一个名为Dates的arrayList,如下所示: "12-07-2017; 13-07-2017; 12-08-2017; 11-08-2019;" "12-07-2017; 13-07-2017; 12-08-2017; 11-08-2019" 通常情况下,集合的排序(日期)为: 但我希望它从右到左读取,而不是从左到右读取,以使Collections.sort(dates)应如下所示: "12-07
"12-07-2017;
13-07-2017;
12-08-2017;
11-08-2019;"
"12-07-2017;
13-07-2017;
12-08-2017;
11-08-2019"
通常情况下,集合的排序(日期)为:
但我希望它从右到左读取,而不是从左到右读取,以使Collections.sort(dates)应如下所示:
"12-07-2017;
13-07-2017;
12-08-2017;
11-08-2019;"
"12-07-2017;
13-07-2017;
12-08-2017;
11-08-2019"
之所以会发生这种情况,是因为您正在按字典顺序对日期表示进行排序 执行此操作有两种选择:
- 使用并传递一个比较器,该比较器解析日期以进行比较,或者
- 将字符串转换为日期,对其进行排序,然后将结果转换回
sString
String
对象的ArrayList
,每个字符串的格式为dd-MM-yyyy
称为dateStrings
首先,创建SimpleDateFormat
对象,该对象将作为将字符串
转换为日期
对象并返回的基础
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
然后将String
对象的ArrayList
转换为Date
对象的ArrayList
ArrayList<Date> dates = new ArrayList<>();
for (String dateString : dateStrings) {
try {
dates.add(dateFormat.parse(dateString));
} catch (ParseException e) {
System.out.println(e);
}
}
ArrayList<String> orderedDateStrings = new ArrayList<>();
for (Date date : dates) {
orderedDateStrings.add(dateFormat.format(date));
}
最后,将Date
对象的ArrayList
转换回String
对象的ArrayList
ArrayList<Date> dates = new ArrayList<>();
for (String dateString : dateStrings) {
try {
dates.add(dateFormat.parse(dateString));
} catch (ParseException e) {
System.out.println(e);
}
}
ArrayList<String> orderedDateStrings = new ArrayList<>();
for (Date date : dates) {
orderedDateStrings.add(dateFormat.format(date));
}
ArrayList OrderedDateString=new ArrayList();
用于(日期:日期){
添加(dateFormat.format(date));
}
现在,您已经拥有了字符串的数组列表
OrderedDateString
,其中的字符串按您所需的顺序排列
不要忘记导入所有java.util.ArrayList、java.util.Collections、java.util.Date、java.text.ParseException、java.text.SimpleDateFormat
转换为LocalDate
并进行排序?但是否还有从右向左读取的方法?那就简单多了。你可以写你自己的比较表,而不只是想从右向左读。如果您这样做,13-07-2017
将在13-07-2008
之前。您需要在自定义比较器中分别比较这些字符串的三个部分中的每一个。我如何才能做到这一点?尽管不会,但如果我有日期:例如2017年7月25日和2017年7月19日,它将把2017年7月25日放在第一位。为什么您需要集合。reverseOrder()
?很抱歉,我在代码中犯了一些错误,现在就修复它们。