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

汉语拼音排序比较器

    博客分类:
  • J2SE
阅读更多
下载 pinyin4j-2.5.0.jar

/**
 *
 * @author lw
 */
import java.util.Arrays;
import java.util.Comparator;
import net.sourceforge.pinyin4j.PinyinHelper;
/**
 * 汉字按照拼音排序的比较器
 * @author administrator
 *
 */
public class PinyinComparator implements Comparator<String> {
    public int compare(String str1, String str2) {
        int strLength = str1.length()>str2.length() ? str2.length() : str1.length();
        for(int i = 0; i < strLength; i++) {
        	String s1 = concatPinyinArray(PinyinHelper.toHanyuPinyinStringArray(str1.charAt(i)));
        	String s2 = concatPinyinArray(PinyinHelper.toHanyuPinyinStringArray(str2.charAt(i)));
            int result = s1.compareTo(s2);
            if(result != 0) {
                return result;
            }
        }
        return str1.length()<str2.length() ? -1 : 1;
    }
    
    private String concatPinyinArray(String[] pinyinArray) {
        StringBuffer pinyinSbf = new StringBuffer();
        
        if ((pinyinArray != null) && (pinyinArray.length > 0)) {
            for (int i = 0; i < pinyinArray.length; i++) {
                pinyinSbf.append(pinyinArray[i]);
            }
        }
        return pinyinSbf.toString();
    }

    public static void main(String[] args) { 
        String[] arrs = { "张三", "张三si", "张高", "赵六", "JAVA", "123", "$%$#", "哈哈A", "怡情"};

        Arrays.sort(arrs, new PinyinComparator());
        for(String s : arrs) {
            System.out.println(s);
        }
    }
}
分享到:
评论

相关推荐

    JS实现中文汉字按拼音排序的方法

    `localeCompare()`会根据当前环境的区域设置对字符串进行比较,对于中文字符,它会基于汉语拼音进行比较。 代码1展示了基本的拼音排序方法: ```javascript var array = ['武汉', '北京', '上海', '天津']; var ...

    姓名排序工具

    这个库能够将简体中文姓名转换成对应的汉语拼音,从而进行准确的排序。 汉语拼音是将汉字转换为拉丁字母的系统,用于教学、输入和排序目的。在姓名排序中,它通常被用来比较姓氏的首字母。在这个过程中,需要注意...

    拼音域名生成器

    拼音域名生成器是一款专门用于创建基于汉语拼音的域名的工具,它可以帮助用户快速生成符合需求的、易于记忆的中文拼音域名。在本文中,我们将深入探讨拼音域名的重要性和生成器的运作原理,以及如何利用这样的工具来...

    displaytag中文排序问题解决办法

    修改可能包括实现自定义的比较器(Comparator),这个比较器会考虑到中文字符的特殊排序规则。 在`1.0修改的文件`和`1.1修改的文件`中,我们可以找到具体的修改内容。这些修改可能包括添加或调整了对中文字符排序的...

    安卓Android源码——带有拼音首字母排序的listview.zip

    首先,拼音首字母排序是为了解决中文姓名或词汇按汉语拼音的首字母顺序排列的问题。在Android系统中,由于默认的排序方式是基于Unicode编码,不适用于中文字符,因此需要自定义排序逻辑。这个源码示例可能会展示如何...

    中文汉字转拼音 大写(默认) 小写 首字母大写

    这个任务的主要目的是将汉字转换成对应的汉语拼音,以便计算机能够更好地理解和处理中文信息。以下将详细介绍汉字转拼音的不同形式及其应用。 1. **大写(默认)**:在大多数情况下,当我们说“大写”时,是指将...

    利用pinyin.jar做的联系人索引

    可以使用Java的`Collections.sort()`方法,提供一个自定义的比较器来比较首字母。 5. 存储和查询:排序后的联系人列表可以存储到数据库、文件或其他数据结构中,便于快速查询。用户可以通过输入拼音首字母来快速...

    Android仿微信联系人按字母排序

    `pinyin4j`是一个Java库,它提供了将汉字转换为汉语拼音的功能。在项目中引入`pinyin4j-2.5.0.jar`库后,可以使用`PinyinHelper.toHanyuPinyinStringArray()`方法将单个汉字转化为拼音数组,然后通过拼接这些数组...

    pinyin-php:PHP拼音转换器。 将中文单词转换为拼音单词

    “pinyin-php”库的主要功能是将中文字符转换成对应的汉语拼音,这对于非中文环境下的程序处理中文信息至关重要。例如,如果你正在构建一个基于PHP的网站,并且需要对用户输入的中文名字进行排序或者搜索,这个库就...

    易语言540个易模块

    A ACCSEE记录显示到超级列表框模块 ACSII加解密模块2.0 ADO方式填充树型框 安全关机 B ...转为汉语拼音模块 1.0 状态栏控件2.0 字段不重复 字节集 自定义鼠标 自动更新模块 1.3 自解压制作

    易语言模块914个

    代码编辑器部分模块.ec 仿vista截图.ec 仿WinXP窗口v3.1版.ec 仿XP界面3.0特别版模块 3.0.ec 仿XP窗口2.0.ec 仿真shell库.ec 优化内存.ec 优化内存模块.ec 伟业超级列表框列宽尺寸自动调整.ec 伟业高级...

    2021年计算机综合等级考试练习题-编码+多媒体病毒+计算机概述.docx

    一级汉字主要包含常用字,按汉语拼音顺序排列,而二级汉字按偏傍部首排序。 3. **字符比较**:字符比较是通过比较它们的ASCII码值来进行的。ASCII码值越大,字符位置越靠后。比如,'A'的ASCII码小于'B',所以'A'比'...

    广西省八校2020届高三语文上学期联考试题.doc

    1. 试卷内容涉及到汉语拼音、成语运用和诗词理解。例如题目中出现的词语读音比较,如“与会/与其”、“投奔/疲于奔命”等,考察了考生对多音字和近音字的区分。此外,成语的使用正确与否也是考查重点,如“惨淡经营...

    人教版四年级(下册)语文第三单元测试卷及答案.doc

    2. 拼音和汉字:测试卷中涉及到汉字的正确读音,如荧光屏、筑巢、捕捉、侵蚀、栖息、揭开等,以及汉字书写,如“旅游”、“蝙蝠”等,考察学生的汉语拼音掌握和常用词汇的书写能力。 3. 词语应用:题目要求学生比较...

    android字母索引效果

    这可以通过监听字母栏的点击事件,然后使用`Collections.sort()`或自定义比较器对数据源进行排序来实现。 5. **滚动逻辑**:为了提供平滑的用户体验,当用户在字母栏上滑动时,对应的列表应自动滚动到对应首字母的...

    2018年全国计算机等级考试一级考试试题库-(2).pdf

    26. 汉字国标码GB2312-80中,次常用汉字按汉语拼音字母顺序排列。 以上内容详细阐述了计算机基础知识,包括计算机历史、二进制转换、ASCII码、内存与硬盘的区别、运算器功能、输入输出设备、计算机病毒、网络通信...

    2022年计算机一级考试《MSOffice》模拟训练题.docx

    17. 汉字编码排序:根据GB2312-80,次常用汉字按汉语拼音字母顺序排列。 18. 计算机指令组成:计算机指令由操作码和地址码两部分组成。 19. 字形码存储:一个24×24点的汉字字形码需要72字节(每个点位占1位,24行...

Global site tag (gtag.js) - Google Analytics