dabocaiqq
dabocaiqq
采纳率66.6%
2020-05-11 20:48

Java语言高分悬赏:怎么给输入的字符串按照汉语拼音的顺序排序呢,要能考虑到复杂的汉字

5
已采纳

Java语言高分悬赏:怎么给输入的字符串按照汉语拼音的顺序排序呢,要能考虑到复杂的汉字

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • wojiushiwo945you 毕小宝 1年前

    JDK 的字符串的比较就是按照 ASCII 的数值排序的,至于对汉字排序,貌似不可行,因为汉字是 Unicode 编码,除非维护一个汉字顺序表。

    点赞 1 评论 复制链接分享
  • weixin_42878211 angula_ 1年前
    import java.util.Comparator;
    import net.sourceforge.pinyin4j.PinyinHelper;
    
    public class PinyinComparator implements Comparator<Object> {
        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)));
        }
    
        private String concatPinyinStringArray(String[] pinyinArray) {
            StringBuffer pinyinSbf = new StringBuffer();
            if ((pinyinArray != null) && (pinyinArray.length > 0)) {
                for (int i = 0; i < pinyinArray.length; i++) {
                    pinyinSbf.append(pinyinArray[i]);
                }
            }
            return pinyinSbf.toString();
        }
    }
    
    
    点赞 评论 复制链接分享