Java中字符编码是Unicode,在给汉字字符串排序时,并不是我们期望的按照汉语拼音排序。

例如,语句System.out.println('龙'>'最')的结果是true,尽管'l'

下载后将其中的pinyin4j-2.5.0.jar加到我们工程的Build Path

import java.util.Comparator;

import net.sourceforge.pinyin4j.PinyinHelper;

public class PinyinComparator implements Comparator {

public int compare(Object o1, Object o2) {

char c1 = ((String) o1).charAt(0);

char c2 = ((String) o2).charAt(0);

return concatPinyinStringArray(

PinyinHelper.toHanyuPinyinStringArray(c1)).compareTo(

concatPinyinStringArray(PinyinHelper

.toHanyuPinyinStringArray(c2)));

}

private String concatPinyinStringArray(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();

}

}

以下代码用来显示某一目录下的所有文件名称,是以汉语拼音排序的:

import java.io.File;

import java.util.Arrays;

import java.util.List;

public class ShowList {

public static void main(String[] args) {

new ShowList().showList("F:\\TDDownload");

}

public void showList(String dirPath) {

File dir = new File(dirPath);

String fileNames[] = dir.list();

List list = Arrays.asList(fileNames);

Arrays.sort(fileNames, new PinyinComparator());

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

}

}

这种方法也有不足之处,就是数字会排在符号之前,例如,某一文件名是[开头,在自己的文件夹下使用文件名排序,它是排在前边的,但是上面的方法,它却排在数字后边。

java 汉字 拼音排序_Java字符串按照汉语拼音排序相关推荐

  1. MySQL按照汉字拼音A-Z排序或者汉字拼音和英文字母混合A-Z排序

    1.按照汉字拼音A-Z排序 主要用到convert这个函数把字符编码转换一下,这里转成gbk select * from 表名 where name like '%%' order by conver ...

  2. java 汉字拼音排序_Java汉字排序(2)按拼音排序

    1.前言 对于包含汉字的字符串来说,排序的方式主要有两种: 一种是拼音,一种是笔画. 本文就讲述如何实现按拼音排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 1 ...

  3. java拼音字符串的顺序,Java字符串按照汉语拼音排序

    2019独角兽企业重金招聘Python工程师标准>>> Java中字符编码是Unicode,在给汉字字符串排序时,并不是我们期望的按照汉语拼音排序. 例如,语句System.out. ...

  4. java pinyin4j 官网_Java中文转汉语拼音类库pinyin4j使用示例

    pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字) pinyin4j官方网址:http://pinyin4j.sourceforge.net/ import java.util. ...

  5. java对象排序_Java™ 教程(对象排序)

    对象排序 List l可以如下排序. Collections.sort(l); 如果List包含String元素,它将按字母顺序排序,如果它由Date元素组成,它将按时间顺序排序,这是怎么发生的?St ...

  6. java字母排序_java可以对字母排序吗?

    java对字母排序代码如下:(推荐:java视频教程)package lianxi.Demo; import java.util.ArrayList; import java.util.List; i ...

  7. java util 排序_Java中常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

  8. java comparable排序_java 实现Comparable接口排序,升序、降序、倒叙

    本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序.本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料. 1.实现的效果 2.创建排序的对象 packa ...

  9. java合并排序_Java中的合并排序算法

    合并排序算法是一种分而治之的算法.在分而治之的范式中,一个问题被分解成较小的问题,其中每个小问题仍然保留着大问题的所有属性--大小除外.为了解决原始问题,每个部分都是单独解决的,然后这些部分又合并在一 ...

  10. java map 自动排序_Java中Map的排序

    Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...

最新文章

  1. VOC2007基本信息
  2. Python多模块文件共享变量
  3. php中的isset函数和empty函数
  4. 安卓开发真机遇到Failed to install Spaceassault.apk on device 'HT1CKV205198': timeout 测试机没有问题...
  5. vue-element-admin文档gitee地址
  6. wxWidgets:wxGenericDirCtrl类用法
  7. iOS之深入解析分类Category的底层原理
  8. Winform VS2015打包
  9. add php support,wordpress函数add_post_type_support()用法示例
  10. Redis链表结构深入
  11. This may cause things to work incorrectly. Make sure to use the same version for both.
  12. Kotlin基础知识
  13. C程序设计--排序(冒泡、选择、插入)--插入
  14. NYOJ 156 Hangover
  15. 基于RV1126平台imx291分析 --- imx291注册
  16. C语言编写小程序——万年历
  17. java连接mysql lookup_Java数据库连接池lookup用法
  18. html 播放amr ios,关于iOS设备播放amr格式的音频文件
  19. 搜索 阿虚同学_凉宫春日阿虚台词“在虚构的故事当中寻求真实感的人脑袋一定有问题”动画是出自那一集?...
  20. flv.js播放视频时遇到的问题

热门文章

  1. 用Excel公式,批量生成工作时间段时间点(打酱油专用)
  2. 学硕计算机可考大数据博士吗,专硕考博比学硕考博难度更大吗?听听上岸的人怎么说...
  3. SII9136添加HDCP功能
  4. NLTK-006:分类文本(性别鉴定)
  5. 磁珠 符号_FB是磁珠的符号 | 学步园
  6. PaddleOCR整体了解
  7. pci和pcie的区别
  8. IIS环境网站http服务器内部500错误的解决方法
  9. 文件或目录损坏,详细教您文件或目录损坏且无法读取怎么办
  10. podman加速器配置,harbor镜像仓库部署