仿联系人中英文、中文排序效果--(1) 排序的实现

本文介绍了一种使用Java实现的拼音排序方法,该方法适用于含有中文姓名及其对应拼音的列表排序场景,通过利用pinyin4j.jar库将中文转换为拼音进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     对于英文和中文混搭的排序(注:手机中联系人表每个姓名字段后面还有一个拼音字段的,此功能shiih,不需要再对它去转换,直接取两个字段即可),用java自带的排序算法是不行的,这里有个开源库pinyin4j.jar可以实现此要求,下面来看例子:
public class PinYinUtil
{
	private HanyuPinyinOutputFormat format = null;
	private String[] pinyin;

	public PinYinUtil()
	{
		format = new HanyuPinyinOutputFormat();
		format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
	}

	// 转换单个字符
	public String getCharacterPinYin(char c)
	{
		try
		{
			pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
		} catch (BadHanyuPinyinOutputFormatCombination e)
		{
			e.printStackTrace();
		}
		// 如果不是汉字,toHanyuPinyinStringArray会返回null
		if (pinyin == null)
			return null;
		// 只取一个发音,如果是多音字,仅取第一个发音
		return pinyin[0];
	}
}
测试代码:
System.out.prin(new PinYinUtil().getCharacterPinYin("乐"));
>:le

当然,如果你要输出多音字的所有拼音,在上面sb.append就是~~

写入数据库后,直接排序即可:


我的博客其他文章列表      
http://my.oschina.net/helu 

 
 



 

转载于:https://my.oschina.net/helu/blog/177499

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值