Сортировать массив строк в Java (особый способ)

У меня проблема с этим, так как мне нужно отсортировать это следующим образом:

До:

{aAbB, abBA, AaBb}

После:

{AaBb, aAbB, abBA}

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

2 ответа

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

Arrays.sort(stringArray) 

Просто делать:

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);

Inspired from: простой способ сортировки строк в алфавитном порядке (с учетом регистра)

Другие вопросы по тегам