2015-10-19 5 views
0

У меня есть проблема, делая это, так как мне нужно отсортировать его таким образом:Сортировать массив строк в Java (особым образом)

До:

 
{aAbB, abBA, AaBb} 

После:

 
{AaBb, aAbB, abBA} 

Идея заключается в сортировке заглавной буквы прямо перед ее версией в нижнем регистре и с каждой буквой. Я на самом деле использую Collator для испанского языка (проблемы с «ñ») и устанавливаю силу PRIMARY, поэтому я могу сравнить, если два слова равны, не имея заглавных букв.

ответ

0

Вобще:

private static Comparator<String> ALPHABETICAL_ORDER = new Comparator<String>() { 
    public int compare(String str1, String str2) { 
     int res = String.CASE_INSENSITIVE_ORDER.compare(str1, str2); 
     if (res == 0) { 
      res = (str1.compareTo(str2)==0) ? 1 : 0; 
     } 
     return res; 
    } 
}; 

Collections.sort(list, ALPHABETICAL_ORDER); 

Вдохновленный из: Simple way to sort strings in the (case sensitive) alphabetical order

0

Это даёт желаемый результат.

Arrays.sort(stringArray) 
+0

Хотя этот код может ответить на вопрос, было бы лучше объяснить, как он решает проблему, не вводя других и почему ее использовать. Ответы только на код не полезны в долгосрочной перспективе. – JNYRanger