java中按汉字拼音排序
2008-11-30 21:20
267 查看
看了下发现确实有问题,看来汉字的字符集扩展的时候对排序考虑的不够周到。goolge下看到sf上有个pinyin4j的项目,虽然有点牛刀,但是可以解决这个问题,pinyin4j的项目地址是: http://pinyin4j.sourceforge.net/
另外javaeye上的zhangljerry 同学,希望你也能看看,因为你的帖子:http://zhangljerry.javaeye.com/blog/68333 中,用你的方法排序,"怡"还是会排在最后的。
代码如下:
结果
[曹, 曾, 昆, 廖, 孟, 宋, 孙, 徐, 怡, 尹, 张, 张, 张]
另外javaeye上的zhangljerry 同学,希望你也能看看,因为你的帖子:http://zhangljerry.javaeye.com/blog/68333 中,用你的方法排序,"怡"还是会排在最后的。
代码如下:
package com.leondu; import java.util.Arrays; import java.util.Comparator; import java.util.List; import net.sourceforge.pinyin4j.PinyinHelper; public class PinyinComparator implements Comparator { private String concatPinyinStringArray(String[] pinyinArray) { StringBuffer pinyinStrBuf = new StringBuffer(); if ((null != pinyinArray) && (pinyinArray.length > 0)) { for (int i = 0; i < pinyinArray.length; i++) { pinyinStrBuf.append(pinyinArray[i]); } } String outputString = pinyinStrBuf.toString(); return outputString; } public int compare(Object o1, Object o2) { char c1 = ((String) o1).charAt(0); char c2 = ((String) o2).charAt(0); return concatPinyinStringArray( PinyinHelper.toHanyuPinyinStringArray(c1)).compareTo( concatPinyinStringArray(PinyinHelper .toHanyuPinyinStringArray(c2))); } public static void main(String[] args) { String[] data = { "孙", "孟", "宋", "尹", "廖", "张", "张", "张", "徐", "昆", "曹", "曾", "怡" }; List<String> list = Arrays.asList(data); Arrays.sort(data, new PinyinComparator()); System.out.println(list); } }
结果
[曹, 曾, 昆, 廖, 孟, 宋, 孙, 徐, 怡, 尹, 张, 张, 张]
相关文章推荐
- [转]Java汉字按照拼音排序
- Java 汉字按拼音排序
- JAVA汉字字符串按拼音排序
- Android 对汉字字符串按照拼音排序 Java
- Android/Java汉字按照拼音排序
- java汉字字符串按拼音排序
- JAVA汉字字符串按拼音排序
- Java汉字排序(汉字转拼音用pinyin4j)
- Android 对汉字字符串按照拼音排序 Java
- Java汉字按照拼音排序
- java中实现汉字按照拼音排序(示例代码)
- Java汉字按照拼音排序
- [转]Java汉字按照拼音排序
- Java汉字按照拼音排序
- Android 对汉字字符串按照拼音排序 Java
- [转]Java汉字按照拼音排序
- JAVA汉字字符串按拼音排序
- java将汉字转成拼音并按照首字母排序的有效方法。
- Java汉字排序(汉字转拼音用pinyin4j)
- java按拼音排序