欢迎使用CSDN-markdown编辑器

本人简单的写了一个中英文混合排序的demo ,用java写的,希望各位大神多多指教。
这个demo引用了一个第三方jar包(pinyin4j.jar)
以下为代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PinYinPX {

//定义一个集合
 static List<String> list=new ArrayList<>();
//生成一个String 集合
public static void paixu(){
    list.add("张三");
    list.add("lisi");
    list.add("zhaowu");
    list.add("王六");
    list.add("刘七");
    list.add("阿巴");
    list.add("alen");
    list.add("久吧");
    list.add("123");
    list.add("32");
    //创建比较器
    Compar c=new Compar();
    //调用集合的快速排序方法
    Collections.sort(list, c);
    //打印结果
    System.out.println(list.toString());

}


public static void main(String[] args) {
    //开始排序
    paixu();
}
//实现比较器类
static class Compar implements Comparator<String>{

    @Override
    public int compare(String o1, String o2) {
        // 此处配置第三方jar包的属性   第三方jar包(pinyin4j.jar)
        HanyuPinyinOutputFormat format=new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);   //设置大小写
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //设置是否显示声调
        format.setVCharType(HanyuPinyinVCharType.WITH_V);     //自己查一下

        String s1=o1;
        String s2=o2;

        char c1=o1.charAt(0);
        char c2=o2.charAt(0);
        //判断是不是中文字符
        if(String.valueOf(c1).matches("[\u4e00-\u9fa5]")){
            try {
                String[] strs1=PinyinHelper.toHanyuPinyinStringArray(c1, format);
                s1=strs1[0];
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        if(String.valueOf(c2).matches("[\u4e00-\u9fa5]")){
            try {
                String[] strs2=PinyinHelper.toHanyuPinyinStringArray(c2, format);
                s2=strs2[0];
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        //判断是不是英文字符
        if(((int)c1>=65&&(int)c1<=90)||((int)c1>=97&&(int)c1<=122)){
            s1=String.valueOf(c1);
        }
        if(((int)c2>=65&&(int)c2<=90)||((int)c2>=97&&(int)c2<=122)){
            s2=String.valueOf(c2);
        }
        //最后进行比较
        return s1.compareTo(s2);

    }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值