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
你应该使用Collator类。

例如

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

然后使用此整理器对收集进行排序

Collections.sort(theList, lithuanianCollator);
http://stackoverflow.com/questions/9261305/java-array-sort-utf-8

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Java数组排序UTF-8