Java实现名字按拼音排序和多条件排序

  1. 拼音排序
@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);// [陈晨, 李华, 李四, 王五, 张三, 张伟]
}
  1. 多条件排序
    实现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实现名字按拼音排序和多条件排序相关推荐

  1. JAVA 中文名字转拼音

    1. maven 添加依赖 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4 ...

  2. 人名和成绩一起排序_EXCEL基础知识——排序功能的使用

    排序筛选可能是大家工作中最常用的数据处理方式了,它能很快地从大到小完成排序,并且筛选除你想要的数据.从简单的排序筛选到高级筛选你会哪几步呢?一起来看看. 一.简单排序 下面这组数据,我们想要将数学成绩 ...

  3. Android/Java汉字转拼音类及按A-Z排序方法

    在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...

  4. java 按照笔画排序_oracle 按照拼音、部首、笔画排序

    下面的方法需要ORACLE9i和以上的版本才支持. Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINE ...

  5. JAVA实现汉字转换为拼音 pinyin4j/JPinyin

    转载自  JAVA实现汉字转换为拼音 pinyin4j/JPinyin 在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个 ...

  6. Java常见排序算法之Shell排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  7. Java汉字排序(3)按笔划排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  8. java中sort函数comparator的使用_Comparator 与排序

    Java 排序 Java 中经常需要对一个列表进行排序,列表中可能是基本数据类型,也可能是自定义对象,对于自定义对象的排序我们可能只想按照其某个属性排序,甚至多种条件组合对其排序,这些都可以借助于 C ...

  9. Java基础知识 21(Set集合,HashSet集合以及它的三种遍历方式(迭代器,增强for循环,forEach),LinkedHashSet集合,TreeSet集合(自然排序法,比较器排序法))

    Java基础知识 21 Set集合 Set集合:一个不包含重复元素的Collection集合,元素不重复,List集合是允许元素重复的. Set接口的三个字类:HashSet(),LinkedHash ...

  10. java算法----排序----(6)希尔排序(最小增量排序)

    1 package log; 2 3 public class Test4 { 4 5 /** 6 * java算法---希尔排序(最小增量排序) 7 * 8 * @param args 9 */ 1 ...

最新文章

  1. 一招教你掌握肌肉发力的感觉
  2. python的高级函数_Python的高级函数
  3. Scala range reverse调试
  4. 405 Method Not Allowed
  5. 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
  6. mysql5.7开启二进制日志_MySQL5.7二进制日志
  7. Python爬虫技巧!网站有反爬?我们有selenium!
  8. svg.draw.js draw rectangle 画矩形
  9. steam一键授权工具_超实用小工具!一键将PC其它平台的游戏导入Steam
  10. 中科院2020计算机sci分区,2020年中科院最新SCI分区表.pdf
  11. “区块链+供应链”的应用案例
  12. 分布式系统与海量数据处理
  13. RouterOS PPTP和L2TP的配置
  14. Arm开发板上使用ldd命令
  15. 地理信息系统和计算机系统的区别,GIS与其他信息系统的区别
  16. fatal: Exiting because of unfinished merge.致命的:由于合并未完成而退出。
  17. 看网易的lofter,预测轻博客的未来
  18. Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
  19. 笑谈中国海军郑和号超级航母
  20. 如果一只股票退市,那么里面所持有这只股票人的钱该怎么办?

热门文章

  1. chrome等浏览器滚动全屏截图方法
  2. html记事本制作静态网页,记事本编辑html静态网页设计(3页)-原创力文档
  3. matlab2010 mex,怎样在Matlab2010a中使用VS2010的mex
  4. 虹科解决方案 | 如何快速解决CAN与CAN FD之间通信的问题
  5. 高斯滤波器讲解(python实现)
  6. WEB UI设计规范
  7. 算法学习(二)——Alpha-Beta剪枝算法
  8. (z)无杂散动态范围SFDR--影响通信机性能的因素
  9. JPM Coin— 货币非国家化的开端 | TokenInsight
  10. 软件研发相关国家标准汇总