关于写联系人时用到pinyin4j.jar的使用

来源:互联网 发布:centos搭建邮箱服务器 编辑:程序博客网 时间:2024/06/05 11:48
package com.zhishucaipei.ksb.utils;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 PinYinKit {    /**     * 使用该方法将首字母变成拼音,后续可以按拼音进行排序。     */    public static String getPingYin(String chineseStr) throws BadHanyuPinyinOutputFormatCombination {        String zhongWenPinYin = "";        char[] chars = chineseStr.toCharArray();        for (int i = 0; i < chars.length; i++) {            String[] pinYin = PinyinHelper.toHanyuPinyinStringArray(chars[i], getDefaultOutputFormat());            if (pinYin != null)                zhongWenPinYin += pinYin[0];            else                zhongWenPinYin += chars[i];        }        return zhongWenPinYin;    }    private static HanyuPinyinOutputFormat getDefaultOutputFormat() {        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);        return format;    }}


在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。

package com.zhishucaipei.ksb.utils;import com.zhishucaipei.ksb.bean.LinkManInfoVO;import java.util.Comparator;public class PinyinComparator implements Comparator<LinkManInfoVO> {    public int compare(LinkManInfoVO o1, LinkManInfoVO o2) {        if (o1.getSortLetters().equals("@") || o2.getSortLetters().equals("#"))            return -1;        else if (o1.getSortLetters().equals("#") || o2.getSortLetters().equals("@"))            return 1;        else            return o1.getSortLetters().compareTo(o2.getSortLetters());    }}

实际使用的方式:

RequestParams params = new RequestParams(UrlConstants.getLinkManAll);params.addBodyParameter("accessToken", user.getData().getAccessToken());x.http().post(params, new Callback.CommonCallback<String>() {    @Override    public void onSuccess(String result) {        try {            JSONObject object = new JSONObject(result);            Gson gson = new Gson();            LinkManBean linkManBean = gson.fromJson(object.toString(), LinkManBean.class);            LinkManInfoData = linkManBean.getData();        } catch (JSONException e) {            e.printStackTrace();        }    }    @Override    public void onError(Throwable ex, boolean isOnCallback) {    }    @Override    public void onCancelled(CancelledException cex) {    }    @Override    public void onFinished() {        // sort by a-z        BaseApplication.setLinkManInfoList(LinkManInfoData);        try {            sortModelList = filledData(LinkManInfoData);        } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {            badHanyuPinyinOutputFormatCombination.printStackTrace();        }        Collections.sort(sortModelList, comparator);        adapter = new SortAdapter(getContext(), sortModelList);        sortListView.setAdapter(adapter);    }});

1 0