前言:上一篇文章我们讲解了java中实现Comparator进行排序 和实现Comparable进行排序,我们分别举例根据学号和姓名降序排序,原文在这里:java中如何对对象排序?  ,不过在文章的最后,我故意留了个问题:“若姓名是汉字,我们上篇文章的方法还可以进行排序吗?”答案是不可以的,今天,我们就这个问题展开阐述!

汉字按照首字母的先后顺序排序

首先我们在上篇文章的代码基础上,把集合的值(name)改成汉字的名称(毕竟学生的姓名哪有叫什么a、b、c的),代码如下:

//对集合进行排序public static void testSortList(){List<Student> stus = new ArrayList<Student>();stus.add(new Student(1,"阿三"));stus.add(new Student(4,"布丁"));stus.add(new Student(5,"曹操"));stus.add(new Student(2,"冯胜"));stus.add(new Student(3,"张三"));System.out.println("排序之前:");for (Student s : stus) {System.out.println(s.getSid()+"---"+s.getName());}//Collections.sort(stus);Collections.sort(stus,new SortName());System.out.println("排序之后:\n");for (Student s : stus) {System.out.println(s.getSid()+"---"+s.getName());}}

按照我们预想的结果,升序的结果应该是:

阿三、布丁、曹操、冯胜、张三

下面我们来跑一下程序看看是不是:

居然不可以,看看问题出在哪里?用脚指头都能想得出来,问题就出在了SortName类的compare方法上,该方法的compareTo只适用于字母字符排序(上篇文章的案例就是),compareTo方法的代码:

@Overridepublic int compare(Student o,Student o1) {return o.getName().compareTo(o1.getName());}

那我们应该如何改呢?只需要新加个Collator.getInstance(java.util.Locale.CHINA);即可,全部代码如下:

@Overridepublic int compare(Student o,Student o1) {Comparator<Object> compare = Collator.getInstance(java.util.Locale.CHINA);return compare.compare(o1.getName(),o.getName());}

让程序跑一跑看看:

那位又问:“老师,这是降序,升序怎么办?”好办,只需将compare里面的参数调换个位置即可,如下:

@Overridepublic int compare(Student o,Student o1) {Comparator<Object> compare = Collator.getInstance(java.util.Locale.CHINA);return compare.compare(o.getName(),o1.getName());}

结果如下:

好了,今天的分享就到这里,我们明天再见!

往期精彩

凌云KTV点歌系统功能简介

2020-10-17

注意!在subList生成子列表之后,一定不要随便更改原列表

2020-10-15

神奇!一行代码实现删除某集合下标20-30的元素

2020-10-14

‘小会计’的转行之旅

2020-10-13

子列表只是原列表的一个视图

2020-10-12

“半路出家”的程序猿怎么不被“熊”

2020-10-11

某同学工作之后的感悟

2020-10-10

点分享

点点赞

点在看

java中如何对汉字进行排序?相关推荐

  1. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  2. Java中sort实现降序排序

    Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...

  3. 高薪程序员面试题精讲系列15之Java中的对象如何实现排序?

    一. 面试题及剖析 1. 今日面试题 我们在项目开发时,有时候会遇到列表搜索查询等效果,其中大部分都可以利用SQL语句来实现,但也有些特殊的搜索排序利用SQL是很难实现的,比如对中文进行排序.说到排序 ...

  4. 如何在Java中对Collection对象进行排序?

    排序集合的对象 (Sorting objects of the Collection) This concept is related to sorting and here we will see ...

  5. java中的10的算法,Java中10个常用的排序算法

    import java.util.ArrayList; import java.util.Arrays; public class Sort { public static void main(Str ...

  6. JAVA中list根据某个字段排序

    Java中LIst根据某个字段进行排序 例如根据id字段升序 // 根据id排序allList.sort(new Comparator<SysMessageListVo>() {@Over ...

  7. java中计算包含汉字字符串的长度

    java中: 1字符=2字节,1字节=8位 英文和数字占一个字节,中文占一个字符,也就是两个字节 在计算的字符串长度的时候,若有汉字,直接用String.length()方法是没法计算出准确的长度,如 ...

  8. Java对List中的中文汉字进行排序以及多音字的处理

    默认按照首个汉字的拼音首字母进行升序排列 public static void main(String[] args) {List<Map<String, Object>> l ...

  9. java字符串数组排序_在Java中对字符串数组进行排序

    允许用户使用字符串数组.他们可以向数组添加字符串,从数组中删除字符串,搜索数组中的字符串,最终他们将能够对数组进行排序.分类是搞砸我的原因.我尝试过几种不同的方法.第一种方法是将数组转换为ArrayL ...

最新文章

  1. 写一个参数返回二进制中1的个数
  2. tensorflow1.11.0 tf.constant()函数(创建一个常数张量)
  3. 【数据结构与算法】之深入解析“二叉树的中序遍历”的求解思路与算法示例
  4. Slave_SQL_Running:No的两种解决办法
  5. Unity(四)IocContainer 封装类库
  6. AC日记——字符串P型编码 openjudge 1.7 31
  7. AtCoder Regular Contest 071
  8. linux解决Tomcat内存溢出
  9. MySQL经典书籍推荐
  10. REST Assured 使用详解
  11. 用java制作扑克牌_Java程序设计之扑克牌
  12. 欲善其事,先利其器——青龙面板依赖安装教程
  13. Ubuntu16.04安装MySQL笔记
  14. 关于调用第三方sdk
  15. 安装Gentoo要点
  16. Unity技术手册-初识编辑器(上)
  17. A题 序号互换(进制转换)
  18. WordPress 自动为文章添加标签内链、文章自动添加标签
  19. 主机上连接到 vmware虚拟机的三种方式
  20. 【毕业N年系列】 毕业第一年

热门文章

  1. char *c = abc和char c[]=abc
  2. Dubbo——面试问题集(1~3)
  3. CF1253E Antenna Coverage
  4. P3242 [HNOI2015] 接水果(整体二分、扫描线、dfs序)
  5. YbtOJ#526-折纸游戏【二分,hash】
  6. P7077-函数调用【拓扑排序,dp】
  7. nssl1458-HR 的疑惑【枚举】
  8. jzoj3626-[LNOI2014]LCA【树链剖分,线段树】
  9. ssl提高组周二备考赛【2018.10.30】
  10. P2517-订货【网络流,费用流】