中文排序要注意的问题

  遇到了中文排序问题,比如想用拼音排序,

String[] strs = {"张三(Z)","李四(L)","王五(W)"};
		
//排序,默认是升序
		Arrays.sort(strs);

 
发现排序结果是:张三(Z)","李四(L)","王五(W),后来看了下《高质量java 151个建议》
一书,发现找到了答案,原来是每一个字符采用uft-8编码来比较,因为张排在李的前面,
所以就有这个答案了。因此建议使用的是compareto排序,如下:
 
	String[] strs = {"张三(Z)","李四(L)","王五(W)"};
		//定义一个中文排序器
		Comparator c = Collator.getInstance(Locale.CHINA);
		//升序排列
		Arrays.sort(strs,c);


  但对于中文复杂的同音字情况,依然会偶然有问题,这个时候,就建议使用如ping4j等开源工具来进行转化排序了

你可能感兴趣的:(中文排序要注意的问题)