有人知道如何使用特殊字符(如重音符)的單詞排列數組嗎?訂購具有特殊字符(例如口音)的數組
Arrays.sort(anArray);
回報'Albacete'
'Álava'
之前,我想'Álava'
'Albacete'
之前。
非常感謝
有人知道如何使用特殊字符(如重音符)的單詞排列數組嗎?訂購具有特殊字符(例如口音)的數組
Arrays.sort(anArray);
回報'Albacete'
'Álava'
之前,我想'Álava'
'Albacete'
之前。
非常感謝
如果你只是想好像他們沒有足夠的口音,你可以使用下面的字符串進行排序:
Collections.sort(strs, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
o1 = Normalizer.normalize(o1, Normalizer.Form.NFD);
o2 = Normalizer.normalize(o2, Normalizer.Form.NFD);
return o1.compareTo(o2);
}
});
相關問題:
對於更復雜的用例,您需要閱讀java.text.Collator
。這裏有一個例子:
Collections.sort(strs, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
Collator usCollator = Collator.getInstance(Locale.US);
return usCollator.compare(o1, o2);
}
});
如果沒有預定義的排序規則滿足您的需求,您可以嘗試使用java.text.RuleBasedCollator
。
(請注意,如果您使用的是數組而不是列表,則可以從'Collections.sort'更改爲'Arrays.sort'。) – aioobe 2014-10-17 08:33:24
你應該看看RuleBasedCollator
RuleBasedCollator類是Collator的具體子類, 提供了一個簡單的,數據驅動的表collator。通過這個類,您可以創建一個定製的基於表格的Collator。 RuleBasedCollator將 個字符映射到鍵排序。
RuleBasedCollator具有用於效率以下限制(其他子類可以用於更復雜的語言):
如果由所控制的特殊對照規則被指定它 適用於整個配頁對象。在整理順序結束時,所有未提及的字符均爲 。
您必須編寫自己的'比較器'並將其傳遞給'Arrays.sort()'。默認情況下,字符串是基於*自然順序*排序的。 – TheLostMind 2014-10-17 08:13:57