min*_*pop 3 java sorting string arraylist
我有一个StringList的String值(它们需要格式化),我需要按年排序.该列表如下:
01-05-2011
11-24-2011
01-12-2012
...
Run Code Online (Sandbox Code Playgroud)
我目前按月按字母顺序排序,但我想知道如何按年份排序这个字符串ArrayList.
Collections.sort(
myList, new Comparator<String>() {
@Override
public int compare(String a, String b) {
// If a is "11-24-2012", then aLastDash points
// here ---------^.
int aLastDash = a.lastIndexOf("-");
int bLastDash = b.lastIndexOf("-");
return a.substring(aLastDash+1).compareTo(
b.substring(bLastDash+1));
}
});
Run Code Online (Sandbox Code Playgroud)
Collections.sort采用a Comparator指定如何比较两个列表值.您的案例中String的列表值是s.您可以按字典顺序比较每个字符串的最后4位数字,然后就完成了.
Collections.sort是稳定的,因此如果您的字符串已经按月排序,并且您按年份排序,则具有相同年份的字符串组仍将按月排序.
理想情况下,您应该将列表转换为字符串以外的其他内容列表,例如,Joda时间日期.现在这个代码是字符串输入的.您越早接受输入并将其强制转换为有意义的对象,您的代码越少,输入假设就越少,当您的假设不完全保留时,您需要调试的代码行越少.