`
anyitzy
  • 浏览: 10644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java对汉字拼音实现排序

阅读更多

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. **...

    java中文排序,数字字母汉字排序

    // 汉字按拼音排序 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中实现汉字按照拼音进行排序,并提供相关的示例代码。 首先,Java的标准库提供了`java.text.Collator`...

    java汉字排序

    4. * 汉字按照拼音排序的比较器 5. * @author KennyLee 2009-2-23 10:08:59 6. * 7. */ 8.public class PinyinComparator implements Comparator&lt;Object&gt; { 9. public int compare(Object o1, Object o2) { 10...

    java集合某个字段按照中文拼音排序.docx

    对Java集合中的某个字段按照中文拼音排序可以使用多种方法,本文将介绍两种常见的方法。 方法一:使用Comparable接口 在Java中,我们可以使用Comparable接口来实现自定义排序。例如,我们可以创建一个Record类,...

    一个获得汉字拼音首字母的java程序

    ### 知识点详解:Java程序获取汉字拼音首字母 #### 核心概念与功能解析 在本Java程序中,核心目标是实现对输入的汉字进行处理,提取其拼音的首字母。这在多种场景下都非常有用,比如中文姓名的拼音缩写、中文...

    JAVA 汉字转换拼音

    总的来说,Java中的汉字转拼音通过pinyin4j库变得非常简单,只需要正确引入库并编写一些辅助方法,就可以轻松地在程序中实现汉字与拼音之间的转换。这在处理中文数据时非常有用,能够帮助开发出更加适应中国用户的...

    Java 获取汉字的拼音或汉字首字母

    汉字拼音库是一个常用的库,它可以将汉字转换为拼音。这个库支持多种拼音格式,包括正常拼音、双拼音、三拼音等。您可以使用这个库来获取汉字的拼音,并将其用于各种用途,例如数据存储、搜索、排序等。除了汉字拼音...

    Android中文按拼音排序

    "Android中文按拼音排序"这个话题就是关于如何实现这样的功能。这篇博客(博文链接:https://gqdy365.iteye.com/blog/2002488)可能提供了详细的实现方法。 首先,我们要理解的是,中文字符本身并不直接携带拼音...

    java拼音搜索pinyin4j

    总的来说,"java拼音搜索pinyin4j"这个项目结合了Java Web开发的基础知识和汉字拼音处理的专业工具,通过Servlet三层架构实现了一个高效的中文搜索功能。开发者可以在这个基础上进一步扩展,如增加拼音排序、语音...

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

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

    java汉字与拼音的转换

    7. **实际应用**:Pinyin4j在许多实际场景中有广泛应用,如关键词提取、关键词搜索、拼音排序、拼音输入法等。 总之,Java中的汉字与拼音转换,尤其是多音字处理,可以借助Pinyin4j库高效实现。理解并掌握其基本...

    实现ListView汉字拼音首字母排序

    本篇将详细介绍如何利用拼音库来实现ListView的汉字拼音首字母排序。 首先,我们需要一个能够将汉字转换为拼音的库。在给定的压缩包`PinyinPaixun`中,可能包含了这样的jar包。这类库通常提供API,可以将汉字转化为...

    中文拼音排序

    中文拼音排序是一种解决方案,它将汉字转换为对应的拼音,然后按照拼音的顺序进行排序。这个“中文拼音排序”项目利用了`pinyin4j`库来实现这一功能。 `pinyin4j`是一个强大的Java库,专门用于处理中文字符的拼音...

    java拼音解析.zip

    总的来说,`pinyin4j`是Java开发者处理汉字拼音问题的得力工具,通过它,你可以轻松地实现汉字到拼音的转换,从而满足各种拼音相关的业务需求。在实际开发中,结合`pinyin4j`提供的功能,可以有效地解决汉字排序、...

    JAVA sql 汉字排序

    例如,可以创建一个表并插入数据,然后使用`ORDER BY`语句配合`collate`关键字来实现按拼音或笔画对汉字进行排序。在示例1中,通过`collate Chinese_PRC_CS_AS_KS_WS`,我们让表中的名字按照拼音顺序排列。而在示例2...

    汉字,拼音,排序chineseandpinyin.zip

    chineseandpinyin 是一个 Java 的类库,实现了汉字转拼音的功能。 目前2.0.0版已经Release,主要功能有: ... 实现小巧严谨的拼音排序,中英混合排序. 更多详情请见:http://51isunshine.github.io/chineseandpinyin/

    java汉字转拼音

    在Java编程语言中,汉字转拼音是一项常见的需求,特别是在处理中文数据、搜索引擎优化(SEO)或者构建基于拼音的排序和搜索功能时。本教程将详细讲解如何在Java中实现这一功能,并提供一个DEMO示例。 首先,我们...

Global site tag (gtag.js) - Google Analytics