2019独角兽企业重金招聘Python工程师标准>>>

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

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

在网上搜了按照汉语拼音排序的方法,需要下载一个jar包,可以从这下载:http://sourceforge.net/projects/pinyin4j/files/

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

以下代码来自:http://blog.csdn.net/kennylee26/article/details/3926168

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();

Listlist = 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. Java中按字母顺序对字符串字符进行排序的4种不同方法

    介绍 : 有时我们需要按字母顺序对字符串中的所有字符进行排序.由于String在Java中是不可变的,因此它将创建一个不同的字符串变量.例如,字符串" albert "在排序后将变 ...

  2. java中按字母排序_如何在Java中按字母顺序对字符串进行排序

    使用toCharArray()方法 该类的toCharArray()方法将字符串转换为字符数组并返回它. 按字母顺序对字符串值进行排序获取所需的字符串. 使用toCharArray()方法将给定的字符 ...

  3. java判断出栈顺序,java判断出栈顺序是否正确

    java判断出栈顺序是否正确 我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或 ...

  4. java翻转单词顺序split_剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42...

    引言 这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如I am a student.中所有字符翻转得到.tnedu ...

  5. java判断出栈顺序,Java判断出栈顺序是不是正确的方法

    我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或a,c,b,d等).但是却肯定 ...

  6. java构造函数的执行顺序,java构造函数和初始化函数的执行顺序

    1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)>    main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...

  7. java nodelist.item_XPath NodeList顺序(Java)

    我有以下 XML结构. Foo 99 foo@test.com 我正在使用以下XPath表达式来获取标题列,同样获取正文列. PathExpression headerExpr = xPath.com ...

  8. Java 类的初始化顺序

    Java 类的初始化顺序 Java中类的初始化顺序是:父类静态代码块-->子类静态代码块-->父类非静态代码块-->父类构造器-->子类非静态代码块-->子类构造器. 测 ...

  9. java控制台两个字符串_java控制台输入字符串

    实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...

最新文章

  1. Jackson的简单用法
  2. Swift 对象内存模型探究(一)
  3. 前端如何高效的与后端协作开发
  4. C++ Primer 5th笔记(chap 14 重载运算和类型转换)递增和递减运算符
  5. C和指针之用拉托斯特尼筛方法(Eratosthenes)查找区间质素个数
  6. PHP 数据库 ODBC
  7. 为什么阿里飞猪、滴滴、携程都被质疑滥用大数据杀熟?
  8. 从像素坐标到相机坐标_多视图几何基础——深入理解相机内外参数
  9. 如何使用windows自带的远程协助
  10. 书信要写标题吗_BEC作文写作格式:标题要写吗?首行是否要缩进?
  11. 富文本_富文本原理了解一下?
  12. 【GNN】百度「NLP」面试的一点总结
  13. 点云定义、PCL数据类型和点云处理方式
  14. clonecd中文破解版|clonecdv光盘复制工具5.5.1.4绿色免费版下载
  15. 搜狗输入法精简_搜狗输入法10.10去图标精简版+9.4.21小米定制版
  16. 遇害的中国留美博士生,被追授博士学位!导师帮他完成了学业!
  17. 信噪比与雷达探测距离之间关系
  18. bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
  19. 报错:npm ERR code EPERM
  20. php导出cvs文件英文自动分割,导出csv_php导出csv文件函数

热门文章

  1. Kotlin快速学习之路(完整版)
  2. css实现loading图标(2)
  3. 借助Process Monitor(ProcMon.exe)逆向一个CrackMe
  4. 【网络编程实践--陈硕】2.4.4 procmon 程序的设计实现
  5. 沐风:小程序固然好!凭什么能自动赚钱?
  6. discuz X2数据字典
  7. DISCUZ的数据字典3
  8. 华为路由器联动_不拉宽带也能畅快冲浪,华为移动路由帮你实现
  9. 基于ResNet50网络的简单垃圾分类网络
  10. FA 镜头 工作距离 焦距及视野计算和结果