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
你应该使用Collator类。
例如
Locale lithuanian = new Locale("lt_LT"); Collator lithuanianCollator = Collator.getInstance(lithuanian);
然后使用此collator对集合进行排序
Collections.sort(theList, lithuanianCollator);
您可以使用Collator进行区域设置敏感的字符串比较。