一、问题

有如下四个人,如何使用Lamdba找到年龄最小的并打印出来

@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class Person {private String name;private  Integer age;
}
  List<Person> persons = Stream.of(new Person("老王", 35), new Person("老张", 23), new Person("老周", 56), new Person("老李", 48)).collect(Collectors.toList());

二、使用sorted+limit

       persons.stream().sorted((p1, p2) -> p2.getAge() - p1.getAge()).limit(1).forEach((person) -> {System.out.println("sorted+limit:" + JSON.toJSONString(person));//   sorted+limit:{"age":56,"name":"老周"}});

三、使用 sorted+skip(不推荐)

     persons.stream().sorted((p1, p2) -> p1.getAge() - p2.getAge()).skip(persons.size() - 1).forEach((person) -> {System.out.println("sorted+skip:" + JSON.toJSONString(person));//      sorted+skip:{"age":56,"name":"老周"}});

四、使用max

        Optional<Person> max = persons.stream().max((p1, p2) -> p1.getAge() - p2.getAge());max.ifPresent((person -> {System.out.println("max:" + JSON.toJSONString(person));//   max:{"age":56,"name":"老周"}}));

五、使用min(不推荐)

   Optional<Person> min = persons.stream().min((p1, p2) -> p2.getAge() - p1.getAge());min.ifPresent((person -> {System.out.println("min:" + JSON.toJSONString(person));//    min:{"age":56,"name":"老周"}}));

六、使用reduce(推荐)

    Optional<Person> cacl2 = persons.stream().reduce((p1, p2) -> p1.getAge() > p2.getAge() ? p1 : p2);cacl2.ifPresent(person -> {System.out.println("reduce" + JSON.toJSONString(person));//   reduce{"age":56,"name":"老周"}});

七、完整代码及结果

 private static void test01() {List<Person> persons = Stream.of(new Person("老王", 35), new Person("老张", 23), new Person("老周", 56), new Person("老李", 48)).collect(Collectors.toList());System.out.println(JSON.toJSONString(persons));//[{"age":35,"name":"老王"},{"age":23,"name":"老张"},{"age":56,"name":"老周"},{"age":48,"name":"老例"}]//    找出年龄最大的人,并输入姓名和年龄persons.stream().sorted((p1, p2) -> p2.getAge() - p1.getAge()).limit(1).forEach((person) -> {System.out.println("sorted+limit:" + JSON.toJSONString(person));//   sorted+limit:{"age":56,"name":"老周"}});persons.stream().sorted((p1, p2) -> p1.getAge() - p2.getAge()).skip(persons.size() - 1).forEach((person) -> {System.out.println("sorted+skip:" + JSON.toJSONString(person));//      sorted+skip:{"age":56,"name":"老周"}});Optional<Person> max = persons.stream().max((p1, p2) -> p1.getAge() - p2.getAge());max.ifPresent((person -> {System.out.println("max:" + JSON.toJSONString(person));//   max:{"age":56,"name":"老周"}}));Optional<Person> min = persons.stream().min((p1, p2) -> p2.getAge() - p1.getAge());min.ifPresent((person -> {System.out.println("min:" + JSON.toJSONString(person));//    min:{"age":56,"name":"老周"}}));Optional<Person> cacl2 = persons.stream().reduce((p1, p2) -> p1.getAge() > p2.getAge() ? p1 : p2);cacl2.ifPresent(person -> {System.out.println("reduce" + JSON.toJSONString(person));//   reduce{"age":56,"name":"老周"}});}
[{"age":35,"name":"老王"},{"age":23,"name":"老张"},{"age":56,"name":"老周"},{"age":48,"name":"老李"}]
sorted+limit:{"age":56,"name":"老周"}
sorted+skip:{"age":56,"name":"老周"}
max:{"age":56,"name":"老周"}
min:{"age":56,"name":"老周"}
reduce{"age":56,"name":"老周"}

java使用Stream流找出集合对象中最小值相关推荐

  1. 通过Stream流找出集合中对象中某个属性重复的值.

    在日常的开发中,经常会碰到对数据库查出来的数据还要进行二次的业务逻辑处理的情况,有时候需要对一个对象集合中的重复的元素进行剔除. 下面是一个demo. 可以找出对象List中,某个属性重复的值. pu ...

  2. 找出数组对象(json数组)中重复的项

    欢迎关注微信公众号:[ 全栈攻略 ] 我们做的最多的业务场景是去重,今天遇到的需求是找出数组对象中重复的项 直接上代码: let arr = [{id: 1, sku: 101, name: 'sku ...

  3. Java8种Stream流相关操作——集合的筛选、归约、分组、聚合

    过滤.筛选   filter skip /*** 过滤 筛选*/@Testpublic void test2(){List<String> list = Arrays.asList(&qu ...

  4. 函数式编程(JAVA)——Stream流

    函数式编程(JAVA)--Stream流 概述 Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作.可以更方便的让我们对集合或数组操作. 下述 ...

  5. Java 8 Stream流 的用法

    Java 8 Stream流 什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而是按需 ...

  6. 对比Java的Stream流和C# 的Linq

    Java由于没有委托的概念,所以用函数式接口 @FunctionalInterface 与 lambda表达式相结合,实现了类似于C# 中委托,C++中函数指针的功能. 函数指针/委托在Java中被命 ...

  7. 【Java】Stream流和方法引用

    1 Stream流 1.1 Stream流优化过滤集合 传统方式 用一个循环过滤姓张的人 用一个循环过滤名字长度大于2的人 public static void main(String[] args) ...

  8. Java 8 Stream 流用法及语法

    Java 8 Stream 流用法 1.简介 Stream流 最全的用法 Stream 能用来干什么?用来处理集合,通过 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据 ...

  9. Java 8 - Stream流骚操作解读2_归约操作

    文章目录 Pre 什么是归约操作 元素求和 reduce reduce如何运行的 最大值和最小值 Pre Java 8 - Stream流骚操作解读见到过的终端操作都是返回一个 boolean ( a ...

最新文章

  1. java列表包含列表_java – 包含另一个列表的列表
  2. Java String.substring内存泄露?
  3. 根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
  4. python线性回归实例_sklearn+python:线性回归案例
  5. wxWidgets:wxSystemOptions类用法
  6. 字扩展,位扩展,和字位扩展_6个有用的LibreOffice扩展
  7. Java必知必会:异常机制详解
  8. Android - 资源(resource)转换为String
  9. 车辆动力学模型在仿真测试中的应用实践
  10. ppt怎么加注解文字_ppt怎么添加备注文字?
  11. USB出现“can‘t set config #1, error -12”问题的探索
  12. 如何用matlab解异或方程,Matlab-6:解非线性方程组newton迭代法
  13. 2024复旦大学计算机考研信息汇总
  14. 十一、高斯混合模型(Gaussian Mixed Model, GMM)
  15. win10禁用快速启动装linux,win10如何关闭快速启动
  16. 敏涵控股集团董事长刘敏不忘初心 做新时代的铿锵玫瑰
  17. 移植UCOSII注意的问题
  18. 【高效程序员系列】2、别做机器人------让工作自动化
  19. 弱电工程LED显示屏日常维护方法
  20. 数据链路层(2层 DataLink Layer)

热门文章

  1. 求三角形的外接圆圆心个半径
  2. 柠檬桉叶油和deet_关于驱蚊防蚊知识及方式手段选择,你想知道的这里都有
  3. 求生之路本地服务器无限子弹,求生之路2无限子弹怎么调整
  4. 秦九昭算法(霍尔(Horner)法则)
  5. 华为P9遭疯抢,首发3分钟售罄;苹果汽车概念图遭权威杂志曝光引热议;中科大机器人太逼真
  6. AST实战|AST入门与实战星球高频问题汇总(二)
  7. Elastic-job系列(一)-------- 搭建Esjob控制台
  8. 【BZOJ4755】 [Jsoi2016]扭动的回文串
  9. 实现交互式shell的几种方式:python pty 方式、升级nc、socat、script获取pty
  10. Olympic rings