比如有如下数组:
|
希望用 Arrays.sort() 排序后变成:
|
我定义了如下的Comparator,但是不符合要求:
|
顺便说一句,我检查了我的 Locale.getDefault(), 结果是 "zh_CN"。
|
希望用 Arrays.sort() 排序后变成:
|
我定义了如下的Comparator,但是不符合要求:
|
顺便说一句,我检查了我的 Locale.getDefault(), 结果是 "zh_CN"。
|
|
结果和不使用 Collator 是一样的,我试用了 Collator.getInstance(Locale.CHINA),结果还是一样的。
我用C#.NET写了个小程序,把GBK所有字符按音序排序后,生成一小段Java程序源码,把排序结果放在Java字符串里。
在Java里,根据此字符串做了个Comparator进行排序。
import java.util.*;
import java.text.*;
public class Test2 {
public static void main(String args[]) {
//Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales
Comparator cmp = (RuleBasedCollator)java.text.Collator.getInstance(java.util.Locale.CHINA);//try testing various locales
String[] arr = {"ÕÂÈý", "Àï˹", "ÍõÎå", "Ñî¹óåú"};
java.util.Arrays.sort(arr, cmp);
for (int i = 0; i < arr.length; i++)
System.out.println(arr);
}
}
public class StringASC implements Comparator
@Override
public int compare(String o1, String o2) {
return Collator.getInstance(java.util.Locale.CHINA).compare(o1, o2);
}
}