好久没有写博客了,期间在做桌面云,被要求保密哈。不过最近在写一个android程序,需要实现一个中英文混合排序。不说了,直接代码;
HanYuUtil.java
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 HanYuUtil {
/**
* 将单个字符(包括单个汉字或者单个英文字母)转换为小写字母
* @param c
* @return
*/
public String getCharacterPinYin(char c)
{
String[] pinyin=null;
HanyuPinyinOutputFormat format =new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//汉字没有声调
format.setVCharType(HanyuPinyinVCharType.WITH_V);
try{
pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);
}catch(BadHanyuPinyinOutputFormatCombination e){
e.printStackTrace();
}
// 如果c不是汉字,toHanyuPinyinStringArray会返回null
if (pinyin == null)
return ((Character)c).toString().toLowerCase();
// 只取一个发音,如果是多音字,仅取第一个发音
return pinyin[0];
}
/**
* 将包含中英文的字符串以小写英文字母的形式返回
* @param str
* @return
*/
public String getStringPinYin(String str)
{
StringBuilder sb = new StringBuilder();
String tempPinyin = null;
for (int i = 0; i < str.length(); ++i)
{
tempPinyin = getCharacterPinYin(str.charAt(i));
sb.append(tempPinyin);
}
return sb.toString();
}
}
CustomerComparator.java
import java.util.Comparator;
import com.xyz.kjy.db.Customer;
public class CustomerComparator implements Comparator<Customer> {
@Override
public int compare(Customer customer0, Customer customer1) {
// 按照商家名称排序
String catalog0 = "";
String catalog1 = "";
if(customer0!=null&&customer0.getStoreName()!=null)
catalog0=HanYuUtil.getStringPinYin(customer0.getStoreName());
if(customer1!=null&&customer1.getStoreName()!=null)
catalog1=HanYuUtil.getStringPinYin(customer1.getStoreName());
return catalog0.compareTo(catalog1);
}
}
Customer.java
public class Customer {
private String storeName;//店名,唯一
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
}
这里面用到了一个第三方的包,在附件
分享到:
相关推荐
这个"关于中文英文混合排序javaDemo"的示例主要展示了如何实现这样的功能。让我们深入探讨一下这个话题。 首先,我们要明白在Java中,默认的字符串排序是基于Unicode编码的,这可能会导致中文字符与英文字符混合...
在"Android 中英文混合排序"这个主题中,我们需要理解如何利用Java(Android的主要编程语言)中的排序机制,结合中文转拼音的方法,来实现这一功能。下面我们将详细探讨这一过程。 首先,Android系统基于Java虚拟机...
js实现中英文混合排序,支持所有浏览器,包括谷歌
这个"swift-通讯录最简单的中英文混合排序封装微信通讯录demo"项目,就是一个很好的示例,它展示了如何在iOS应用中实现中英文混合的通讯录排序功能。这个项目基于Swift开发,主要涉及UI相关控件的使用,如...
Android 实现列表数据按名称排序、中英文混合排序 Android 中实现列表数据按名称排序和中英文混合排序是非常常见的需求,特别是在开发者需要对列表中的数据进行排序时。本文详细介绍了 Android 实现列表数据按名称...
为了解决这个问题,我们可以采用自定义的方法来实现中英文混合排序。以下是一种可行的解决方案: 1. **获取中文首字母**:编写一个名为 `getCName` 的函数,该函数接收一个中文字符作为参数。如果字符是英文,直接...
在本文中,我们将深入探讨如何使用JavaScript实现数字、字母以及中文字符的混合排序。首先,我们将介绍排序的基本原理和方法,并对现有的sort方法进行分析。然后,我们将详细介绍如何通过自定义函数实现复杂的排序...
本文将详细介绍在Element UI的表格组件中实现数字、字母和中文字符混合排序的方法。 首先,我们需要理解Element UI表格组件的排序机制。通过设置`sortable`属性,表格的某一列可以启用排序功能。默认情况下,这种...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
List<String> location=new ArrayList(); 一行代码轻松搞定混合排序问题 Collections.sort(location, new SortUtils(true));
在iOS开发中,经常需要对汉字或英文名称的数组进行排序和分组,以便于用户更方便地查找和浏览。这个任务通常涉及到Objective-C(OC)编程语言的使用,因此我们今天将深入探讨如何在iOS应用中实现这个功能。 首先,...
然而,随着全球化的发展,我们的联系人列表中可能包含中英文混合的名字,这就对通讯录的排序提出了新的挑战。"YZX_ChineseSorting"是一个专门解决此类问题的解决方案,它不仅支持中英文混排,还具备处理多音字的能力...
实现的功能:混合字符串处理 中英文排序 右侧悬浮栏 顶部名称提示栏 滚动悬浮提示,文件里放置了运行的效果图,实现的效果还是让人很满意的 我开发的环境是intellij idea, 导入到eclipse要注意处理一些问题,具体...
内容索引:脚本资源,Ajax/JavaScript,表格排序,表头 JavaScript表格排序,点击表头即可排序,此脚本支持中文汉字排序、中英文混合排序、数据大小排序、文件名称类型排序、日期排序、价格排序、中文和数字排序;...
中文汉字排序、 中英文混合排序、 数据大小排序、 文件类型排序(后缀名排序) 日期时间排序、 价格排序、 中文混合数字排序; 使用方法:文档载入后new tableListSort(arguments,arguments)。 接受两个参数:第一个参数...