java 汉字 拼音排序_Java字符串按照汉语拼音排序
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字符串按照汉语拼音排序相关推荐
- MySQL按照汉字拼音A-Z排序或者汉字拼音和英文字母混合A-Z排序
1.按照汉字拼音A-Z排序 主要用到convert这个函数把字符编码转换一下,这里转成gbk select * from 表名 where name like '%%' order by conver ...
- java 汉字拼音排序_Java汉字排序(2)按拼音排序
1.前言 对于包含汉字的字符串来说,排序的方式主要有两种: 一种是拼音,一种是笔画. 本文就讲述如何实现按拼音排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 1 ...
- java拼音字符串的顺序,Java字符串按照汉语拼音排序
2019独角兽企业重金招聘Python工程师标准>>> Java中字符编码是Unicode,在给汉字字符串排序时,并不是我们期望的按照汉语拼音排序. 例如,语句System.out. ...
- java pinyin4j 官网_Java中文转汉语拼音类库pinyin4j使用示例
pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字) pinyin4j官方网址:http://pinyin4j.sourceforge.net/ import java.util. ...
- java对象排序_Java™ 教程(对象排序)
对象排序 List l可以如下排序. Collections.sort(l); 如果List包含String元素,它将按字母顺序排序,如果它由Date元素组成,它将按时间顺序排序,这是怎么发生的?St ...
- java字母排序_java可以对字母排序吗?
java对字母排序代码如下:(推荐:java视频教程)package lianxi.Demo; import java.util.ArrayList; import java.util.List; i ...
- java util 排序_Java中常见的排序方法
本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...
- java comparable排序_java 实现Comparable接口排序,升序、降序、倒叙
本人由于项目开发中需要对查询结果list进行排序,这里根据的是每一个对象中的创建时间降序排序.本人讲解不深,只实现目的,如需理解原理还需查阅更深的资料. 1.实现的效果 2.创建排序的对象 packa ...
- java合并排序_Java中的合并排序算法
合并排序算法是一种分而治之的算法.在分而治之的范式中,一个问题被分解成较小的问题,其中每个小问题仍然保留着大问题的所有属性--大小除外.为了解决原始问题,每个部分都是单独解决的,然后这些部分又合并在一 ...
- java map 自动排序_Java中Map的排序
Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...
最新文章
- VOC2007基本信息
- Python多模块文件共享变量
- php中的isset函数和empty函数
- 安卓开发真机遇到Failed to install Spaceassault.apk on device 'HT1CKV205198': timeout 测试机没有问题...
- vue-element-admin文档gitee地址
- wxWidgets:wxGenericDirCtrl类用法
- iOS之深入解析分类Category的底层原理
- Winform VS2015打包
- add php support,wordpress函数add_post_type_support()用法示例
- Redis链表结构深入
- This may cause things to work incorrectly. Make sure to use the same version for both.
- Kotlin基础知识
- C程序设计--排序(冒泡、选择、插入)--插入
- NYOJ 156 Hangover
- 基于RV1126平台imx291分析 --- imx291注册
- C语言编写小程序——万年历
- java连接mysql lookup_Java数据库连接池lookup用法
- html 播放amr ios,关于iOS设备播放amr格式的音频文件
- 搜索 阿虚同学_凉宫春日阿虚台词“在虚构的故事当中寻求真实感的人脑袋一定有问题”动画是出自那一集?...
- flv.js播放视频时遇到的问题