java拼音字符串的顺序,Java字符串按照汉语拼音排序
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字符串按照汉语拼音排序相关推荐
- Java中按字母顺序对字符串字符进行排序的4种不同方法
介绍 : 有时我们需要按字母顺序对字符串中的所有字符进行排序.由于String在Java中是不可变的,因此它将创建一个不同的字符串变量.例如,字符串" albert "在排序后将变 ...
- java中按字母排序_如何在Java中按字母顺序对字符串进行排序
使用toCharArray()方法 该类的toCharArray()方法将字符串转换为字符数组并返回它. 按字母顺序对字符串值进行排序获取所需的字符串. 使用toCharArray()方法将给定的字符 ...
- java判断出栈顺序,java判断出栈顺序是否正确
java判断出栈顺序是否正确 我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或 ...
- java翻转单词顺序split_剑指offer解题报告(Java版)——翻转单词顺序 左旋字符串 42...
引言 这种翻转的问题会遇到很多,其实就是一个倒序的问题,对于第一个题只是想翻转单词的顺序,而并不想把整个字符串翻转了,如果完全翻转的话,比如I am a student.中所有字符翻转得到.tnedu ...
- java判断出栈顺序,Java判断出栈顺序是不是正确的方法
我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或a,c,b,d等).但是却肯定 ...
- java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)> main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...
- java nodelist.item_XPath NodeList顺序(Java)
我有以下 XML结构. Foo 99 foo@test.com 我正在使用以下XPath表达式来获取标题列,同样获取正文列. PathExpression headerExpr = xPath.com ...
- Java 类的初始化顺序
Java 类的初始化顺序 Java中类的初始化顺序是:父类静态代码块-->子类静态代码块-->父类非静态代码块-->父类构造器-->子类非静态代码块-->子类构造器. 测 ...
- java控制台两个字符串_java控制台输入字符串
实验要求: 1/7 1.掌握 JDK 的安装及参数配置方法,能在控制台界面使用 Java 命令进行 Java 程序的编译及运行. 2.掌握 Eclipse 软件安装方法.3.掌握在 ...... 习题 ...
最新文章
- Jackson的简单用法
- Swift 对象内存模型探究(一)
- 前端如何高效的与后端协作开发
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)递增和递减运算符
- C和指针之用拉托斯特尼筛方法(Eratosthenes)查找区间质素个数
- PHP 数据库 ODBC
- 为什么阿里飞猪、滴滴、携程都被质疑滥用大数据杀熟?
- 从像素坐标到相机坐标_多视图几何基础——深入理解相机内外参数
- 如何使用windows自带的远程协助
- 书信要写标题吗_BEC作文写作格式:标题要写吗?首行是否要缩进?
- 富文本_富文本原理了解一下?
- 【GNN】百度「NLP」面试的一点总结
- 点云定义、PCL数据类型和点云处理方式
- clonecd中文破解版|clonecdv光盘复制工具5.5.1.4绿色免费版下载
- 搜狗输入法精简_搜狗输入法10.10去图标精简版+9.4.21小米定制版
- 遇害的中国留美博士生,被追授博士学位!导师帮他完成了学业!
- 信噪比与雷达探测距离之间关系
- bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
- 报错:npm ERR code EPERM
- php导出cvs文件英文自动分割,导出csv_php导出csv文件函数