java中如何对汉字进行排序?
前言:上一篇文章我们讲解了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中如何对汉字进行排序?相关推荐
- java中常用的几种排序算法--常见笔试面试
转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...
- Java中sort实现降序排序
Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...
- 高薪程序员面试题精讲系列15之Java中的对象如何实现排序?
一. 面试题及剖析 1. 今日面试题 我们在项目开发时,有时候会遇到列表搜索查询等效果,其中大部分都可以利用SQL语句来实现,但也有些特殊的搜索排序利用SQL是很难实现的,比如对中文进行排序.说到排序 ...
- 如何在Java中对Collection对象进行排序?
排序集合的对象 (Sorting objects of the Collection) This concept is related to sorting and here we will see ...
- java中的10的算法,Java中10个常用的排序算法
import java.util.ArrayList; import java.util.Arrays; public class Sort { public static void main(Str ...
- JAVA中list根据某个字段排序
Java中LIst根据某个字段进行排序 例如根据id字段升序 // 根据id排序allList.sort(new Comparator<SysMessageListVo>() {@Over ...
- java中计算包含汉字字符串的长度
java中: 1字符=2字节,1字节=8位 英文和数字占一个字节,中文占一个字符,也就是两个字节 在计算的字符串长度的时候,若有汉字,直接用String.length()方法是没法计算出准确的长度,如 ...
- Java对List中的中文汉字进行排序以及多音字的处理
默认按照首个汉字的拼音首字母进行升序排列 public static void main(String[] args) {List<Map<String, Object>> l ...
- java字符串数组排序_在Java中对字符串数组进行排序
允许用户使用字符串数组.他们可以向数组添加字符串,从数组中删除字符串,搜索数组中的字符串,最终他们将能够对数组进行排序.分类是搞砸我的原因.我尝试过几种不同的方法.第一种方法是将数组转换为ArrayL ...
最新文章
- 写一个参数返回二进制中1的个数
- tensorflow1.11.0 tf.constant()函数(创建一个常数张量)
- 【数据结构与算法】之深入解析“二叉树的中序遍历”的求解思路与算法示例
- Slave_SQL_Running:No的两种解决办法
- Unity(四)IocContainer 封装类库
- AC日记——字符串P型编码 openjudge 1.7 31
- AtCoder Regular Contest 071
- linux解决Tomcat内存溢出
- MySQL经典书籍推荐
- REST Assured 使用详解
- 用java制作扑克牌_Java程序设计之扑克牌
- 欲善其事,先利其器——青龙面板依赖安装教程
- Ubuntu16.04安装MySQL笔记
- 关于调用第三方sdk
- 安装Gentoo要点
- Unity技术手册-初识编辑器(上)
- A题 序号互换(进制转换)
- WordPress 自动为文章添加标签内链、文章自动添加标签
- 主机上连接到 vmware虚拟机的三种方式
- 【毕业N年系列】 毕业第一年
热门文章
- char *c = abc和char c[]=abc
- Dubbo——面试问题集(1~3)
- CF1253E Antenna Coverage
- P3242 [HNOI2015] 接水果(整体二分、扫描线、dfs序)
- YbtOJ#526-折纸游戏【二分,hash】
- P7077-函数调用【拓扑排序,dp】
- nssl1458-HR 的疑惑【枚举】
- jzoj3626-[LNOI2014]LCA【树链剖分,线段树】
- ssl提高组周二备考赛【2018.10.30】
- P2517-订货【网络流,费用流】