Java数组排序UTF-8

我想对ArrayList进行排序,但问题是我的母语字符 – 我的字母是这样的: 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 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 

你应该使用Collat​​or类。

例如

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

然后使用此collat​​or对集合进行排序

 Collections.sort(theList, lithuanianCollator); 

您可以使用Collat​​or进行区域设置敏感的字符串比较。