Подтвердить что ты не робот

Сортировка массива Java UTF-8

Я хочу сортировать ArrayList<String>, но проблема в том, что мои персонажи на родном языке - мой алфавит выглядит следующим образом: a, ą, b, c, č, d, e, f ... z, ž. Как вы видите, z символ второй с конца, а ą - второй в алфавите, поэтому после сортировки массива он сортируется некорректно. Все мои родные символы перемещаются в конец массива. Пример:

package lt;

import java.util.ArrayList;
import java.util.Collections;

public class test {
    public static void main(String[] args) {
        List<String> items = new ArrayList<>();
        items.add("bbc");
        items.add("ąbc");
        items.add("abc");
        items.add("zzz");

        System.out.println("Unsorted: ");
        for(String str : items) {
            System.out.println(str);
        }

        Collections.sort(items);
        System.out.println();

        System.out.println("Sorted: ");
        for(String str : items) {
            System.out.println(str);
        }
    }
}

Вывод:

Unsorted: 
bbc
ąbc
abc
zzz

Sorted: 
abc
bbc
zzz
ąbc

Должно быть:

Sorted:
abc
ąbc
bbc
zzz
4b9b3361

Ответ 1

Вы должны использовать Collator класс.

Например

Locale lithuanian = new Locale("lt_LT");
Collator lithuanianCollator = Collator.getInstance(lithuanian);

И затем сортируйте коллекцию с помощью этого collator

Collections.sort(theList, lithuanianCollator);

Ответ 2

Вы можете использовать Collator, чтобы выполнить локальные статистические сравнения строк.