根据拼音首字母匹配汉字(电话本联系人查找)

本文探讨了如何在电话本中通过联系人姓名的拼音首字母进行高效查找,涉及到字符串处理、搜索算法和Android布局优化等方面的技术应用。
摘要由CSDN通过智能技术生成

国标码中汉字的分布是有一定规律的,拼音首字母相同的汉字在同一区域(但多音字有例外),分布如下:

int[] gbCode = new int[] { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, -1, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, -1, -1, 52980, 53689,54481, 55290 };
[gbCode[0],gbCode[1])区域是以a开关的汉字,.......
这样我们就可以先对需要查找的汉字字符串编码(用GB2312),然后判断即可。

private void init()
	{
		ArrayList<Integer> codeList;
		for (String name : names)
		{
			codeList = new ArrayList<Integer>();
			for (int k = 0; k < name.length(); k++)
			{
				codeList.add(getGBCode(name.charAt(k)));
			}
			gbCodeMap.put(name, codeList);
		}
		stack.push(gbCodeMap);
	}
private int getGBCode(char word)
	{
		byte[] array = new byte[2];
		int[] codes = new int[2];
		try
		{
			array = String.valueOf(word).getBytes("GB2312");
			for (int k = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值