`
臻是二哥
  • 浏览: 189489 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

中英文混合排序

    博客分类:
  • JAVA
阅读更多
好久没有写博客了,期间在做桌面云,被要求保密哈。不过最近在写一个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;
	}

}



这里面用到了一个第三方的包,在附件
3
0
分享到:
评论

相关推荐

    关于中文英文混合排序javaDemo

    这个"关于中文英文混合排序javaDemo"的示例主要展示了如何实现这样的功能。让我们深入探讨一下这个话题。 首先,我们要明白在Java中,默认的字符串排序是基于Unicode编码的,这可能会导致中文字符与英文字符混合...

    Android 中英文混合排序

    在"Android 中英文混合排序"这个主题中,我们需要理解如何利用Java(Android的主要编程语言)中的排序机制,结合中文转拼音的方法,来实现这一功能。下面我们将详细探讨这一过程。 首先,Android系统基于Java虚拟机...

    js实现中英文混合排序

    js实现中英文混合排序,支持所有浏览器,包括谷歌

    swift-通讯录最简单的中英文混合排序封装微信通讯录demo

    这个"swift-通讯录最简单的中英文混合排序封装微信通讯录demo"项目,就是一个很好的示例,它展示了如何在iOS应用中实现中英文混合的通讯录排序功能。这个项目基于Swift开发,主要涉及UI相关控件的使用,如...

    Android实现列表数据按名称排序、中英文混合排序

    Android 实现列表数据按名称排序、中英文混合排序 Android 中实现列表数据按名称排序和中英文混合排序是非常常见的需求,特别是在开发者需要对列表中的数据进行排序时。本文详细介绍了 Android 实现列表数据按名称...

    小程序中英文混合排序问题解决

    为了解决这个问题,我们可以采用自定义的方法来实现中英文混合排序。以下是一种可行的解决方案: 1. **获取中文首字母**:编写一个名为 `getCName` 的函数,该函数接收一个中文字符作为参数。如果字符是英文,直接...

    基于JS实现数字+字母+中文的混合排序方法

    在本文中,我们将深入探讨如何使用JavaScript实现数字、字母以及中文字符的混合排序。首先,我们将介绍排序的基本原理和方法,并对现有的sort方法进行分析。然后,我们将详细介绍如何通过自定义函数实现复杂的排序...

    解决vue elementUI中table里数字、字母、中文混合排序问题

    本文将详细介绍在Element UI的表格组件中实现数字、字母和中文字符混合排序的方法。 首先,我们需要理解Element UI表格组件的排序机制。通过设置`sortable`属性,表格的某一列可以启用排序功能。默认情况下,这种...

    Java编程实现中英混合字符串数组按首字母排序的方法

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...

    Java 字母数字字符串 混合排序(绝对超值管用)

    List&lt;String&gt; location=new ArrayList(); 一行代码轻松搞定混合排序问题 Collections.sort(location, new SortUtils(true));

    IOS根据汉字(或英文)按字母排序并按首字母分组

    在iOS开发中,经常需要对汉字或英文名称的数组进行排序和分组,以便于用户更方便地查找和浏览。这个任务通常涉及到Objective-C(OC)编程语言的使用,因此我们今天将深入探讨如何在iOS应用中实现这个功能。 首先,...

    YZX_ChineseSorting通讯录中英文排序

    然而,随着全球化的发展,我们的联系人列表中可能包含中英文混合的名字,这就对通讯录的排序提出了新的挑战。"YZX_ChineseSorting"是一个专门解决此类问题的解决方案,它不仅支持中英文混排,还具备处理多音字的能力...

    android ListView根据字母排序和定位----支持混合排序

    实现的功能:混合字符串处理 中英文排序 右侧悬浮栏 顶部名称提示栏 滚动悬浮提示,文件里放置了运行的效果图,实现的效果还是让人很满意的 我开发的环境是intellij idea, 导入到eclipse要注意处理一些问题,具体...

    JavaScript表格排序,点击表头即可排序

    内容索引:脚本资源,Ajax/JavaScript,表格排序,表头 JavaScript表格排序,点击表头即可排序,此脚本支持中文汉字排序、中英文混合排序、数据大小排序、文件名称类型排序、日期排序、价格排序、中文和数字排序;...

    javascript多种数据类型表格排序代码分析

    中文汉字排序、 中英文混合排序、 数据大小排序、 文件类型排序(后缀名排序) 日期时间排序、 价格排序、 中文混合数字排序; 使用方法:文档载入后new tableListSort(arguments,arguments)。 接受两个参数:第一个参数...

Global site tag (gtag.js) - Google Analytics