需求:将一组数据按某一字段中文拼音排序
1、Test测试类:
PinyinComparator comparator = new PinyinComparator();
Collections.sort(strList, comparator);
其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。
2、PinyinComparator排序类:
public class PinyinComparator implements Comparator<Object> {
/**
* 比较两个字符串
*/
public int compare(Object o1, Object o2) {
String[] name1 = (String[]) o1;
String[] name2 = (String[]) o2;
String str1 = getPingYin(name1[0]);
String str2 = getPingYin(name2[0]);
int flag = str1.compareTo(str2);
return flag;
}
/**
* 将字符串中的中文转化为拼音,其他字符不变
*
* @param inputString
* @return
*/
public String getPingYin(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组
String output = "";
try {
for (int i = 0; i < input.length; i++) {
// \\u4E00是unicode编码,判断是不是中文
if (java.lang.Character.toString(input[i]).matches(
"[\\u4E00-\\u9FA5]+")) {
// 将汉语拼音的全拼存到temp数组
String[] temp = PinyinHelper.toHanyuPinyinStringArray(
input[i], format);
// 取拼音的第一个读音
output += temp[0];
}
// 大写字母转化成小写字母
else if (input[i] > 'A' && input[i] < 'Z') {
output += java.lang.Character.toString(input[i]);
output = output.toLowerCase();
}
output += java.lang.Character.toString(input[i]);
}
} catch (Exception e) {
Log.e("Exception", e.toString());
}
return output;
}
}
注:附件中仿微信联系人拼音分类列表为别人写的一个模仿微信联系的Demo,功能比较强大;另个附件是我写的测试程序,可以通过Test test = new Test();test.init();运行;
分享到:
相关推荐
在listview中,实现中文拼音排序的效果
本示例"按拼音排序分组LIST"着重于展示如何在Android应用中实现一个列表(List),该列表中的元素按照汉字的拼音首字母从A到Z进行排序,并且用户可以点击每个字母来筛选显示相应首字母的数据。这个功能在很多应用...
在Android开发中,为了提供良好的...在实际项目中,可以结合`Android-Android中文拼音排序以及中文笔划排序和英文排序`这个项目的源码(ChinesePinyinSortAndStrokeSort-master)进行学习和实践,以加深理解和掌握。
在中文环境下,一个常见的需求是按照汉字的拼音首字母进行排序,这被称为“拼音排序”。本篇文章将深入探讨如何在Android应用中实现这样一个功能,并提供一个公共类`PinyinSort`的详细解释。 首先,我们要理解汉字...
这篇教程主要讲解如何在Android环境下实现中文字符串按拼音排序的方法。这个方法适用于各种场景,如用户列表、地址簿等,能够提供更符合用户习惯的排序体验。 首先,我们需要创建一个测试类(Test类)来调用排序...
在这个案例中,我们有两个JSON文件:`按拼音排列.json`和`按省市区排列.json`,它们分别存储了中国所有城市的拼音排序和按照省市区结构的数据。 1. **按拼音排列的JSON数据**:这种数据组织方式便于快速查找和排序...
在Android开发中,有时我们需要将汉字转换为对应的拼音,以便进行一些特定的处理,比如搜索、排序或语音合成。这个过程被称为汉字转拼音。在"Android汉字转拼音例子"中,开发者利用了一个第三方库来实现这个功能。接...
总的来说,实现一个带有拼音首字母排序和过滤搜索功能的Android通讯录应用,涉及到Android系统的ContentResolver、ContactsContract、自定义Adapter、汉字转拼音、数据排序和过滤等多个知识点。这个过程既锻炼了...
在Android开发中,有时我们需要将汉字转换为对应的拼音,以便进行搜索、排序或者其他文本处理操作。这个"Android汉字转拼音Demo"就是这样一个示例项目,它演示了如何在Android应用中实现汉字到拼音的转换。这个过程...
2. 数据排序:对包含汉字的数据进行拼音排序,使得用户在查找时能按拼音顺序找到目标。 3. 语音识别:在语音输入场景下,可以先将语音转化为文本,再将文本中的汉字转为拼音,便于进一步处理。 6. 性能考虑:由于...
通过 `HanziToPinyin` 类与 `Pinyin4J.jar` 库的结合使用,开发者可以在Android应用中轻松实现汉字到拼音的转换,从而解决与文本处理相关的各种需求,比如全文搜索、拼音排序等。不过要注意,由于Pinyin4J是基于Java...
在"Android 中英文混合排序"这个主题中,我们需要理解如何利用Java(Android的主要编程语言)中的排序机制,结合中文转拼音的方法,来实现这一功能。下面我们将详细探讨这一过程。 首先,Android系统基于Java虚拟机...
在Android项目中,可以引入该库,对中文姓名进行预处理,将每个汉字转换成拼音,然后根据拼音进行排序。 5. **自定义比较器(Comparator)**: 在Android中,我们可以创建一个自定义的Comparator类,重写compare()...
- 可能提供了额外的处理,比如去除声调、拼音排序等。 在实际应用中,开发者可以使用这些工具来实现以下功能: - 搜索优化:将用户输入的中文关键词转换为拼音,便于与数据库中的拼音数据进行匹配。 - 语音合成:...
综上所述,实现“android根据字母排序的城市列表”功能,需要结合Android的UI组件、数据结构、排序算法、汉字转拼音库以及性能优化等多方面知识。通过合理的设计和编程,我们可以为用户提供一个易用且高效的查询体验...
本示例源码“Android应用源码之带有拼音首字母排序的listview”着重于如何在ListView中实现基于拼音首字母的排序功能,这在中文应用中非常常见,如联系人应用或各类列表检索。下面将详细介绍这一功能的实现原理和...
在中文环境中,每个汉字都有对应的拼音表示,例如“移动”的拼音是“yí dòng”,“联通”的拼音是“lián tōng”,以此类推。汉字简拼搜索的目标是,当用户输入一个或多个汉字的拼音首字母时,系统能够快速匹配到...