package com.anyitzy.web;
import java.util.Comparator;
import net.sourceforge.pinyin4j.PinyinHelper;
import com.anyitzy.web.entity.train.Train;
@SuppressWarnings("rawtypes")
public class PinyinComparator implements Comparator {
public int compare(Object obj1,Object obj2) {
Train e1=(Train)obj1;
Train e2=(Train)obj2;
String o1=e1.getName();
String o2=e2.getName();
for (int i = 0; i < o1.length() && i < o2.length(); i++) {
int codePoint1 = o1.charAt(i);
int codePoint2 = o2.charAt(i);
if (Character.isSupplementaryCodePoint(codePoint1)
|| Character.isSupplementaryCodePoint(codePoint2)) {
i++;
}
if (codePoint1 != codePoint2) {
if (Character.isSupplementaryCodePoint(codePoint1)
|| Character.isSupplementaryCodePoint(codePoint2)) {
return codePoint1 - codePoint2;
}
String pinyin1 = pinyin((char) codePoint1);
String pinyin2 = pinyin((char) codePoint2);
if (pinyin1 != null && pinyin2 != null) { // 两个字符都是汉字
if (!pinyin1.equals(pinyin2)) {
return pinyin1.compareTo(pinyin2);
}
} else {
return codePoint1 - codePoint2;
}
}
}
return o1.length() - o2.length();
}
/**
* 字符的拼音,多音字就得到第一个拼音。不是汉字,就return null。
*/
private String pinyin(char c) {
String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);
if (pinyins == null) {
return null;
}
return pinyins[0];
}
}
package com.anyitzy.web;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.anyitzy.web.PinyinComparator;
import com.anyitzy.web.entity.train.Train;
public class PinyinComparatorTest {
public static void main(String[] args) {
List<Train> list=new ArrayList<Train>();
{
Train t=new Train();
t.setName("土工结构与边坡防护");
list.add(t);
}
{
Train t=new Train();
t.setName("地基处理");
list.add(t);
}
{
Train t=new Train();
t.setName("地震工程");
list.add(t);
}
{
Train t=new Train();
t.setName("基坑工程与地下工程");
list.add(t);
}
{
Train t=new Train();
t.setName("岩土工程勘察");
list.add(t);
}
{
Train t=new Train();
t.setName("岩土工程检测与监测、工程经济与管理");
list.add(t);
}
{
Train t=new Train();
t.setName("岩土工程设计基本原则、浅基础");
list.add(t);
}
{
Train t=new Train();
t.setName("特殊条件下的岩土工程");
list.add(t);
}
PinyinComparator comparator = new PinyinComparator();
Collections.sort(list, comparator) ;
for(Train t:list){
System.out.println(t.getName()+"==");
}
}
}
相关推荐
在IT领域,尤其是在编程和数据处理中,对汉字进行按拼音排序是一项常见的需求。这个任务主要涉及汉字与拼音之间的转换以及排序算法的应用。标题“软件实现汉字按拼音排序”所指的知识点主要包括以下几部分: 1. **...
// 汉字按拼音排序 if (pinyin1 == null || pinyin2 == null) { return o1.compareTo(o2); } return Arrays.stream(pinyin1).sorted().toString().compareTo(Arrays.stream(pinyin2).sorted().toString()); } ...
Java中的汉字拼音工具包主要服务于程序开发,尤其是前端开发,用于处理汉字与拼音之间的转换,这对于构建具有中文支持的应用或网站至关重要。这类工具包能够帮助开发者轻松地将汉字转换为对应的拼音,便于进行搜索、...
在Java编程中,有时我们需要对包含汉字的数据进行排序,特别是在处理中文名称或文本时。本文主要探讨如何在Java中实现汉字按照拼音进行排序,并提供相关的示例代码。 首先,Java的标准库提供了`java.text.Collator`...
4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator<Object> { 9. public int compare(Object o1, Object o2) { 10...
对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...
### 知识点详解:Java程序获取汉字拼音首字母 #### 核心概念与功能解析 在本Java程序中,核心目标是实现对输入的汉字进行处理,提取其拼音的首字母。这在多种场景下都非常有用,比如中文姓名的拼音缩写、中文...
总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...
汉字拼音库是一个常用的库,它可以将汉字转换为拼音。这个库支持多种拼音格式,包括正常拼音、双拼音、三拼音等。您可以使用这个库来获取汉字的拼音,并将其用于各种用途,例如数据存储、搜索、排序等。除了汉字拼音...
"Android中文按拼音排序"这个话题就是关于如何实现这样的功能。这篇博客(博文链接:https://gqdy365.iteye.com/blog/2002488)可能提供了详细的实现方法。 首先,我们要理解的是,中文字符本身并不直接携带拼音...
总的来说,"java拼音搜索pinyin4j"这个项目结合了Java Web开发的基础知识和汉字拼音处理的专业工具,通过Servlet三层架构实现了一个高效的中文搜索功能。开发者可以在这个基础上进一步扩展,如增加拼音排序、语音...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
7. **实际应用**:Pinyin4j在许多实际场景中有广泛应用,如关键词提取、关键词搜索、拼音排序、拼音输入法等。 总之,Java中的汉字与拼音转换,尤其是多音字处理,可以借助Pinyin4j库高效实现。理解并掌握其基本...
本篇将详细介绍如何利用拼音库来实现ListView的汉字拼音首字母排序。 首先,我们需要一个能够将汉字转换为拼音的库。在给定的压缩包`PinyinPaixun`中,可能包含了这样的jar包。这类库通常提供API,可以将汉字转化为...
中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一功能。 `pinyin4j`是一个强大的Java库,专门用于处理中文字符的拼音...
总的来说,`pinyin4j`是Java开发者处理汉字拼音问题的得力工具,通过它,你可以轻松地实现汉字到拼音的转换,从而满足各种拼音相关的业务需求。在实际开发中,结合`pinyin4j`提供的功能,可以有效地解决汉字排序、...
例如,可以创建一个表并插入数据,然后使用`ORDER BY`语句配合`collate`关键字来实现按拼音或笔画对汉字进行排序。在示例1中,通过`collate Chinese_PRC_CS_AS_KS_WS`,我们让表中的名字按照拼音顺序排列。而在示例2...
chineseandpinyin 是一个 Java 的类库,实现了汉字转拼音的功能。 目前2.0.0版已经Release,主要功能有: ... 实现小巧严谨的拼音排序,中英混合排序. 更多详情请见:http://51isunshine.github.io/chineseandpinyin/
在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化(SEO)或者构建基于拼音的排序和搜索功能时。本教程将详细讲解如何在Java中实现这一功能,并提供一个DEMO示例。 首先,我们...