[Lambda]Java一句代码求出List中的最大值对象

这里是根据员工年龄来得到年龄最大的那个对象.(仅适用于JDK1.8及以上)

Employee 是员工类

age  是它的年龄

getAge() 是 age的getter方法

Optional userOp= userList.stream().max(Comparator.comparingInt(Employee ::getAge));
 Employee maxEmp = userOp.get();

 或者:

 

Optional userOp= userList.stream().filter(Objects::nonNull).filter(item -> item.getAge() != null)
.sorted(Comparator.comparing(Employee::getAge).reversed()).findFirst().get();
 Employee maxEmp = userOp.get();

避免空指针,添加一个filter,判断age不能为空,

filter(item -> item.getAge() != null)

,或者使用orElse防止空指针。

Optional userOp= employees.stream().filter(Objects::nonNull).max(Comparator.comparingInt(Employee ::getAge));
               Employee maxEmp = userOp.orElse(new Employee());

 

 09-17日添加:

这些都只是简单的Java8的新特性,具体的可以参考 《Java 8 in Action》,这里不多赘述

[Lambda]Java一句代码求出List中的最大值对象_第1张图片

你可能感兴趣的:(Lambda)