Jak posortować tablicę z polskimi znakami?

0

Jak można poprawnie posortować tablicę wyrazów z polskimi literami? Arrays.sort(tablica) ustawia polskie znaki na końcu:-(

0
package test;

import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;

public class BlowupTest {

    public static void main(String[] args) {
        String[] arr = {
                "ąłć", "ąlc", "ąłc", "alc", "buhuhuhu"
        };
        Arrays.sort(arr, new Comparator<String>() {

            @Override
            public int compare(String s1, String s2) {
                Collator c = Collator.getInstance(new Locale("pl", "PL"));
                return c.compare(s1, s2);
            }

        });
        System.out.println(Arrays.deepToString(arr));
    }
}
0

Dziękuję bardzo za szybką odpowiedź i super rozwiązanie!!!

0

Wlasciwie to lepiej tak:

Arrays.sort(arr, new Comparator<String>() {

            private Collator c = Collator.getInstance(new Locale("pl", "PL"));

            @Override
            public int compare(String s1, String s2) {
                return c.compare(s1, s2);
            }

        });
0

Collator implementuje Comparator :)

Arrays.sort(arr, Collator.getInstance(new Locale("pl", "PL")));

0

Zamiast new Locale("pl", "PL") można użyć Locale.getDefault()
Jest to o tyle lepsze, że zawsze sortuje się zawsze zgodnie z ustawieniem lokalizacyjnym systemu operacyjnego. Program jako taki nie musi się więc zupełnie zajmować kwestią lokalizacji w kontekście sortowania. Jeżeli aplikacja z użyciem tej metody zostanie odpalona z cyrylicą na bułgarskim komputerze, to też będzie poprawnie sortować bułgarskie napisy mimo braku uwzględnienia w programie lokalizacji bułgarskiej. Podobnie jeżeli w przyszłości powstanie nowy system operacyjny i/lub nowa, nie istniejącą wcześniej lokalizacja, alfabet i/lub reguły sortowania - program nadal będzie sortował poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0