首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8流API

Java 8流API
EN

Stack Overflow用户
提问于 2017-03-09 21:07:30
回答 2查看 168关注 0票数 2

我有一个简单的指令

代码语言:javascript
复制
Stream.concat(manager.getChild().stream(), 
            manager1.getChild().stream())
            .map(dev -> dev.getSalary())
            .reduce(0, Integer::max);

这连接了两个列表,并返回赚得更多的开发人员。这将返回流中对象的最高工资,但是如何检索具有最高工资的对象呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-09 21:32:48

使用Stream.max(Comparator<? super T> comparator)方法:

代码语言:javascript
复制
Stream.concat(manager.getChild().stream(),
    manager1.getChild().stream())
    .max(Comparator.comparingInt(dev -> dev.getSalary())
票数 5
EN

Stack Overflow用户

发布于 2017-03-09 21:33:06

不幸的是,您不能回到上一步来获取提供最大工资的stream元素;您必须通过一个属性来比较这些元素。

查找薪资最高的下属:

代码语言:javascript
复制
Employee max = Stream.of(manager, manager1)
  .map(Employee::getChild)
  .flatMap(Collection::stream)
  .max(Comparators.comparing(Employee::getSalary))
  .orElse(null);

我假设了一个Employee类,以便可以使用方法引用,并将代码重构为一种更易用/更标准的方法,即通过流式传输管理器开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42696231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档