这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母.

支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下

传统的 :

List list = new ArrayList();

list.add("一鸣惊人 -Y");

list.add("人山人海 -R");

list.add("海阔天空 -H");

list.add("空前绝后 -K");

list.add("后来居上 -H");

Comparator cmp = java.text.Collator.getInstance(java.util.Locale.CHINA);

Collections.sort(list, cmp);

for (String str : list) {

System.out.println(str);

}输出结果:

海阔天空 -H

后来居上 -H

空前绝后 -K

人山人海 -R

一鸣惊人 -Y

这种看上去没有什么问题 , 但是换上生僻字之后 , 就会出现错误.

比如这样子:

List list1 = new ArrayList();

list1.add("网易汽车 - W");

list1.add("新民汽车网 - X");

list1.add("钛媒体 - T");

list1.add("瘾科技 - Y");

list1.add("昕薇网 - X");

list1.add("安倍 - A");

list1.add("中国 - Z");

list1.add("中心 - Z");

Comparator cmp = java.text.Collator.getInstance(java.util.Locale.CHINA);

Collections.sort(list1, cmp);

for (String str : list1) {

System.out.println(str);

}输出结果:

安倍 - A

网易汽车 - W

新民汽车网 - X

中国 - Z

中心 - Z

昕薇网 - X

钛媒体 - T

瘾科技 - Y

这个结果就是错误的 , "钛媒体 - T" 应该在第二位...

解决方案 :

使用 "com.ibm.icu.text.Collator" 替换 "java.text.Collator"

使用 "com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE" 替换 "java.util.Locale.CHINA"

比如这样子:

List list2 = new ArrayList();

list2.add("网易汽车 - W");

list2.add("新民汽车网 - X");

list2.add("钛媒体 - T");

list2.add("瘾科技 - Y");

list2.add("昕薇网 - X");

list2.add("安倍 - A");

list2.add("中国 - Z");

list2.add("中心 - Z");

Comparator cmp2 = com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE);

Collections.sort(list2, cmp2);

for (String str : list2) {

System.out.println(str);

}输出结果:

安倍 - A

钛媒体 - T

网易汽车 - W

昕薇网 - X

新民汽车网 - X

瘾科技 - Y

中国 - Z

中心 - Z这下子 , 生僻汉字的输出也正确了

数组汉字排序

String[] names = {"王林", "杨宝", "李镇", "刘迪", "刘波"};

Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(ULocale.SIMPLIFIED_CHINESE));

System.out.println(Arrays.toString(names));输出 : [李镇, 刘波, 刘迪, 王林, 杨宝]

Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)相关推荐

  1. java 数组长度 可变_java基础之集合长度可变的实现原理

    首先我们要明白java中的集合Collection,List,ArrayList之间的关系: ArrayList是具体的实现类,实现了List接口 List是接口,继承了Collection接口 Li ...

  2. java list排序工具类_java 之 Collections集合工具类排序

    数组有工具类Arrays,集合也有一个工具类Collections. sort方法: sort(List list):根据其元素natural ordering对制定的列表进行排序 sort(List ...

  3. java数组是不是对象_java的数组是对象吗

    数组是对象哦.数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable.java中数组的创建使用了关键字new,虽然格式和普通的类创建的方式 ...

  4. java数组二分查找_java 13-1 数组高级二分查找

    查找: 1.基本查找:数组元素无序(从头找到尾) 2.二分查找(折半查找):数组元素有序 pS:数组的元素必须有顺序,从小到大或者从大到小.以下的分析是从小到大的数组 二分查找分析: A:先对数组进行 ...

  5. java类和对象数组传参_java对象,数组作为参数传递给

    java 学习笔记 ( 四 )---- 对象.数组作为参数传递,静态变量.静态方法的使用, 内部类,使用文档注释 2009-10-15 20:21 ***对象作为参数传递*** class passp ...

  6. java 数组 初始化 个数_Java中数组的初始化

    一.什么是初始化 在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用 ...

  7. java创建数组的方式_Java创建数组的几种方式总结

    1.一维数组的声明方式: type[] arrayName; 或 type arrayName[]; 附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不 ...

  8. java数组定义错误_JAVA定义数组 int a[]=new int[100000] 错误

    我用JAVA定义了一个1W的数组可以使用,但是定义一个10W的数组提示Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsE ...

  9. 对象数组的初始化_JAVA中数组是什么?

    Java中数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特点: ...

最新文章

  1. jQuery EasyUI DataGrid - 格式化列(formatter )
  2. ROS学习:创建机器人的urdf
  3. JavaScript的文档窗口事件
  4. excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接
  5. 数学建模学习笔记(八)——分类模型
  6. 不想做科技第一的金融公司,不是好的养老去处
  7. 一招鲜——交换机配置mstp+vrrp实验
  8. JavaScript --------WebS APIs学习之DOM(三)
  9. 5G时代将给智能营销笔记本带来什么样的改变
  10. iOS iPhone各机型尺寸及导航栏高度
  11. 速度围观 | 如何用大数据拆散一对异地恋情侣
  12. 头歌java 实训 答案 代码 java入门
  13. 2021年度训练联盟热身训练赛第三场——C,G,I
  14. 高级Magento模型 EAV
  15. iphone阅读html,iphone下Safari查看网页源代码
  16. %I64d 和%lld 的区别
  17. 实现图的邻接矩阵和邻接表的存储
  18. UEM系列(一)用户体验管理介绍
  19. 海信电视版本系统升级服务器地址,海信电视系统版本太低怎么升级?
  20. unity室内渲染(白模渲染篇)

热门文章

  1. 黑金花大理石_黑金花 , 经典就是经典 ! 美 !
  2. Seaborn可视化使用relplot函数可视化数据长度不同的时间序列实战:two Pandas Series of different lengths
  3. R语言ggplot2可视化使用lwd和flatten参数调整箱图(boxplot)线条的粗细:中位线和其他线条整体粗细比例更协调
  4. python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题
  5. 回归分析评估指标均方对数误差(MSLE)详解及其意义:Mean Squared Log Error
  6. 计算机领域收费sci期刊,计算机领域收费sci期刊 - 百度学术
  7. Linux修改文件权限为777
  8. Assembly and diploid architecture of an individual human genome via single-molecule technologies
  9. BST AVL 红黑树 B B+树
  10. 6位有符号补码阵列乘法器_C/C++学习日记:原码、反码和补码