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));
}
});
Collections.sort
принимает Comparator
, который определяет, как сравнивать два значения списка.Значения списка в вашем случае String
с.Вы можете просто сравнить последние 4 цифры каждой строки лексикографически, и все готово.
Collections.sort
равно стабильно , поэтому, если ваши строки уже отсортированы по месяцам, и вы сортируете поyear, группы строк с одинаковым годом все равно будут отсортированы по месяцам.
В идеале, вы должны преобразовать свой список в список чего-то, кроме строк, например, даты времени Joda.Прямо сейчас этот код строго типизирован .Чем раньше вы берете входные данные и приводите их к значимым объектам, тем меньше в вашем коде приходится делать предположений на входе, тем меньше строк кода вы должны отлаживать, когда ваши предположения не совсем верны.