我想按日期排序我的ArrayList.我的ArrayList为:
10 June - name
15 April - name
23 July - name
03 March - name
Run Code Online (Sandbox Code Playgroud)
它有日,月和字符串名称.我如何按日期排序?
谢谢
正如@The Elite Gentleman所指出的,你应该使用自定义比较器.这是一个完整的例子:
import java.text.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(
Arrays.asList("10 June - name",
"15 April - name",
"23 July - name",
"03 March - name"));
// Print list before sorting.
System.out.println(list);
// Sort list according to date.
Collections.sort(list, new Comparator<String>() {
DateFormat df = new SimpleDateFormat("dd MMM");
@Override
public int compare(String s1, String s2) {
try {
Date d1 = df.parse(s1.split("-")[0].trim());
Date d2 = df.parse(s2.split("-")[0].trim());
return d1.compareTo(d2);
} catch (ParseException pe) {
System.out.println("erro: " + pe);
return 0;
}
}
});
// Print list after sorting
System.out.println(list);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
[10 June - name, 15 April - name, 23 July - name, 03 March - name]
[03 March - name, 15 April - name, 10 June - name, 23 July - name]
Run Code Online (Sandbox Code Playgroud)
(但是,更好的想法可能是将日期/名称对封装到一个单独的类中.这样就可以避免每次需要将字符串用于这些类型时解析字符串.)