Java实现名字按拼音排序和多条件排序
Java实现名字按拼音排序和多条件排序
- 拼音排序
@Test
public void nameSortTest() {String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨"};List<String> nameList = new ArrayList<>(nameArray.length);Collections.addAll(nameList, nameArray);nameList = nameList.stream().sorted((name1, name2) -> {Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);return cmp.compare(name1, name2);}).collect(Collectors.toList());System.out.println(nameList);// [陈晨, 李华, 李四, 王五, 张三, 张伟]
}
- 多条件排序
实现User先按status排序,再按name, 最后按id排序
class User {private Integer id;private String name;private Boolean status;public User(Integer id, String name, Boolean status) {this.id = id;this.name = name;this.status = status;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Boolean getStatus() {return status;}public void setStatus(Boolean status) {this.status = status;}@Overridepublic String toString() {return "User{" +", status=" + status +", name='" + name + '\'' +", id=" + id +'}' +"\n";}
}
@Test
public void multipleConditionSortTest() {String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨", "王五"};List<User> userList = new ArrayList<>(nameArray.length);for (int i = 0; i < nameArray.length; i++) {userList.add(new User(i,nameArray[i], i % 3 == 0 ));}userList = userList.stream().sorted((user1, user2) -> {if (!user1.getStatus().equals(user2.getStatus())) {return user1.getStatus().compareTo(user2.getStatus());} else if (!user1.getName().equals(user2.getName())) {Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);return cmp.compare(user1.getName(), user2.getName());} else {user1.getId().compareTo(user2.getId());}}).collect(Collectors.toList());System.out.println(userList);// [User{, status=false, name='陈晨', id=5}// ,User{, status=false, name='李华', id=2}// ,User{, status=false, name='李四', id=1}// ,User{, status=false, name='张伟', id=4}// ,User{, status=true, name='王五', id=3}// ,User{, status=true, name='王五', id=6}// ,User{, status=true, name='张三', id=0}// ]
}
顺便总结几种Array转list的方法
String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨"};
List<String> nameList = new ArrayList<>(nameArray.length);
for (String name: nameArray) {nameList.add(name);
}
String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨"};
List<String> nameList = new ArrayList<>(Arrays.asList(nameArray));
String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨"};
List<String> nameList = Arrays.stream(nameArray).collect(Collectors.toList());
String [] nameArray = {"张三", "李四", "李华", "王五", "张伟", "陈晨"};
List<String> nameList = new ArrayList<>(nameArray.length);
Collections.addAll(nameList, nameArray);
Java实现名字按拼音排序和多条件排序相关推荐
- JAVA 中文名字转拼音
1. maven 添加依赖 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4 ...
- 人名和成绩一起排序_EXCEL基础知识——排序功能的使用
排序筛选可能是大家工作中最常用的数据处理方式了,它能很快地从大到小完成排序,并且筛选除你想要的数据.从简单的排序筛选到高级筛选你会哪几步呢?一起来看看. 一.简单排序 下面这组数据,我们想要将数学成绩 ...
- Android/Java汉字转拼音类及按A-Z排序方法
在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...
- java 按照笔画排序_oracle 按照拼音、部首、笔画排序
下面的方法需要ORACLE9i和以上的版本才支持. Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINE ...
- JAVA实现汉字转换为拼音 pinyin4j/JPinyin
转载自 JAVA实现汉字转换为拼音 pinyin4j/JPinyin 在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个 ...
- Java常见排序算法之Shell排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- Java汉字排序(3)按笔划排序
对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...
- java中sort函数comparator的使用_Comparator 与排序
Java 排序 Java 中经常需要对一个列表进行排序,列表中可能是基本数据类型,也可能是自定义对象,对于自定义对象的排序我们可能只想按照其某个属性排序,甚至多种条件组合对其排序,这些都可以借助于 C ...
- Java基础知识 21(Set集合,HashSet集合以及它的三种遍历方式(迭代器,增强for循环,forEach),LinkedHashSet集合,TreeSet集合(自然排序法,比较器排序法))
Java基础知识 21 Set集合 Set集合:一个不包含重复元素的Collection集合,元素不重复,List集合是允许元素重复的. Set接口的三个字类:HashSet(),LinkedHash ...
- java算法----排序----(6)希尔排序(最小增量排序)
1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...
最新文章
- 一招教你掌握肌肉发力的感觉
- python的高级函数_Python的高级函数
- Scala range reverse调试
- 405 Method Not Allowed
- 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
- mysql5.7开启二进制日志_MySQL5.7二进制日志
- Python爬虫技巧!网站有反爬?我们有selenium!
- svg.draw.js draw rectangle 画矩形
- steam一键授权工具_超实用小工具!一键将PC其它平台的游戏导入Steam
- 中科院2020计算机sci分区,2020年中科院最新SCI分区表.pdf
- “区块链+供应链”的应用案例
- 分布式系统与海量数据处理
- RouterOS PPTP和L2TP的配置
- Arm开发板上使用ldd命令
- 地理信息系统和计算机系统的区别,GIS与其他信息系统的区别
- fatal: Exiting because of unfinished merge.致命的:由于合并未完成而退出。
- 看网易的lofter,预测轻博客的未来
- Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
- 笑谈中国海军郑和号超级航母
- 如果一只股票退市,那么里面所持有这只股票人的钱该怎么办?