sorted,中间操作。有两种排序:

  • sorted():自然排序,流中元素需实现Comparable接口

  • sorted(Comparator com):Comparator排序器自定义排序

「案例:将员工按工资由高到低(工资一样则按年龄由大到小)排序」

public class StreamTest {public static void main(String[] args) {List<Person> personList = new ArrayList<Person>();personList.add(new Person("Sherry", 9000, 24, "female", "New York"));personList.add(new Person("Tom", 8900, 22, "male", "Washington"));personList.add(new Person("Jack", 9000, 25, "male", "Washington"));personList.add(new Person("Lily", 8800, 26, "male", "New York"));personList.add(new Person("Alisa", 9000, 26, "female", "New York"));// 按工资升序排序(自然排序)List<String> newList = personList.stream().sorted(Comparator.comparing(Person::getSalary)).map(Person::getName).collect(Collectors.toList());// 按工资倒序排序List<String> newList2 = personList.stream().sorted(Comparator.comparing(Person::getSalary).reversed()).map(Person::getName).collect(Collectors.toList());// 先按工资再按年龄升序排序List<String> newList3 = personList.stream().sorted(Comparator.comparing(Person::getSalary).thenComparing(Person::getAge)).map(Person::getName).collect(Collectors.toList());// 先按工资再按年龄自定义排序(降序)List<String> newList4 = personList.stream().sorted((p1, p2) -> {if (p1.getSalary() == p2.getSalary()) {return p2.getAge() - p1.getAge();} else {return p2.getSalary() - p1.getSalary();}}).map(Person::getName).collect(Collectors.toList());System.out.println("按工资升序排序:" + newList);System.out.println("按工资降序排序:" + newList2);System.out.println("先按工资再按年龄升序排序:" + newList3);System.out.println("先按工资再按年龄自定义降序排序:" + newList4);}
}

Java8 Stream详解~排序:sorted相关推荐

  1. Java8 Stream详解~聚合(max/min/count)

    max.min.count这些字眼你一定不陌生,没错,在mysql中我们常用它们进行数据统计.Java stream中也引入了这些概念和用法,极大地方便了我们对集合.数组的数据统计工作. 「案例一:获 ...

  2. Java8 Stream详解~Stream概述

    Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利. 那么什么是Stream? Stream将要处 ...

  3. Java8 Stream详解~ 提取/组合

    流也可以进行合并.去重.限制.跳过等操作. public class StreamTest {public static void main(String[] args) {String[] arr1 ...

  4. Java8 Stream详解~收集(collect)

    collect,收集,可以说是内容最繁多.功能最丰富的部分了.从字面上去理解,就是把一个流收集起来,最终可以是收集成一个值也可以收集成一个新的集合. 1 归集(toList/toSet/toMap) ...

  5. Java8 Stream详解~归约(reduce)

    归约,也称缩减,顾名思义,是把一个流缩减成一个值,能实现对集合求和.求乘积和求最值操作. 「案例一:求Integer集合的元素之和.乘积和最大值.」 public class StreamTest { ...

  6. Java8 Stream详解~映射(map/flatMap)

    映射,可以将一个流的元素按照一定的映射规则映射到另一个流中.分为map和flatMap: map:接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素. flatMap:接收一个 ...

  7. Java8 Stream详解~筛选:filter

    筛选,是按照一定的规则校验流中的元素,将符合条件的元素提取到新的流中的操作. 「案例一:筛选出Integer集合中大于7的元素,并打印出来」 public class StreamTest {publ ...

  8. Java8 Stream详解~遍历/匹配(foreach/find/match)

    Stream也是支持类似集合的遍历和匹配元素的,只是Stream中的元素是以Optional类型存在的.Stream的遍历.匹配非常简单. // import已省略,请自行添加,后面代码亦是publi ...

  9. Java8 Stream详解~Stream 创建

    Stream可以通过集合数组创建. 1.通过 java.util.Collection.stream() 方法用集合创建流 List<String> list = Arrays.asLis ...

最新文章

  1. page分页php,Page分页函数
  2. Python:非常详细的解释如何判断某个变量的类型以及代码实现
  3. 个人计算机系统构造方式,计算机系统构造概要归纳.doc
  4. linux ftp使用相关
  5. 吃货少女走关西,美食小店大盘点
  6. Java面典_Java集合04——fail-fastfail-safe 详解
  7. java list 包含字符串_Java8实战:查找列表中包含的字符串
  8. 酒店IPTV数字电视系统解决方案
  9. 圈小猫游戏与天使问题——容错值理论
  10. ASP.NET Core MVC 入门到精通 - 1. 开发必备工具 (2021)
  11. C 判断 —— switch语句(输入的年份判断是否为闰年,根据输入的月份判断这月有多少天)
  12. python3+selenium实现126邮箱登陆并发送带附件的邮件(显示等待版本)
  13. CSAPP-Architecture lab
  14. 【98期分享】4款汇报总结PPT模板免费下载
  15. 微信聊天记录怎么备份?
  16. 北美Developer生存发展攻略
  17. 【毕业设计】病房无线呼叫系统 - stm32 单片机 物联网 嵌入式
  18. 微软亚洲研究院的一道面试题
  19. 需求分析中适应性怎么写_需求文档,怎么写才不会被打?
  20. JQuery nodeName、nodeValue 以及 nodeType

热门文章

  1. MSON,让JSON序列化更快
  2. 论文浅尝 | 基于微量资源的神经网络跨语言命名实体识别
  3. Android官方开发文档Training系列课程中文版:分享文件之请求一个共享文件
  4. Android NDK开发入门学习笔记(图文教程,极其详尽)
  5. 【TensorFlow】实现、训练并评估简单的回归模型和分类模型
  6. 软件工程网络15个人阅读作业1(201521123029 郑佳明)
  7. Tomcat启动时项目重复加载,导致资源初始化两次的问题
  8. python--*args和**kwargs可变参数
  9. Spark笔记——技术点汇总
  10. webServices 应该支持Get和Post调用,在web.config应该增加以下代码