Mam listę:
List<String> list = new ArrayList<String>();
list.add("TEST.AAX.MOE10.TXT");
list.add("TEST.AAX.MOE6.TXT");
list.add("TEST.AAX.MOE3.TXT");
list.add("TEST.AAX.MOE12.TXT");
list.add("TEST.AAX.MOE9.TXT");
list.add("TEST.AAX.MOE1.TXT");
Chcę ją posortować (alfabetycznie), rezultat sortowania jaki oczekuje to:
TEST.AAX.MOE1.TXT
TEST.AAX.MOE3.TXT
TEST.AAX.MOE6.TXT
TEST.AAX.MOE9.TXT
TEST.AAX.MOE10.TXT
TEST.AAX.MOE12.TXT
Próbowałem na różne sposoby, ostatni na jaki się skusiłem to GUAVA (http://code.google.com/p/guava-libraries/):
private static Comparator<String> stringAlphabeticalComparator = new Comparator<String>() {
public int compare(String str1, String str2) {
return ComparisonChain.start().
compare(str1,str2, String.CASE_INSENSITIVE_ORDER).
compare(str1,str2).
result();
}
};
Wywołanie:
System.out.println("------ przed sortowaniem -----");
System.out.println(list.toString());
System.out.println("------ po sortowaniu -----");
Collections.sort(list, stringAlphabeticalComparator);
System.out.println(list.toString());
I wynik wywołania:
------ przed sortowaniem -----
[TEST.AAX.MOE10.TXT, TEST.AAX.MOE6.TXT, TEST.AAX.MOE3.TXT, TEST.AAX.MOE12.TXT, TEST.AAX.MOE9.TXT, TEST.AAX.MOE1.TXT]
------ po sortowaniu -----
[TEST.AAX.MOE1.TXT, TEST.AAX.MOE10.TXT, TEST.AAX.MOE12.TXT, TEST.AAX.MOE3.TXT, TEST.AAX.MOE6.TXT, TEST.AAX.MOE9.TXT]
Jest ktoś w stanie powiedzieć jak uzyskać wynik jakiego oczekuję?