我有一个简单的指令
Stream.concat(manager.getChild().stream(),
manager1.getChild().stream())
.map(dev -> dev.getSalary())
.reduce(0, Integer::max);这连接了两个列表,并返回赚得更多的开发人员。这将返回流中对象的最高工资,但是如何检索具有最高工资的对象呢?
发布于 2017-03-09 21:32:48
使用Stream.max(Comparator<? super T> comparator)方法:
Stream.concat(manager.getChild().stream(),
manager1.getChild().stream())
.max(Comparator.comparingInt(dev -> dev.getSalary())发布于 2017-03-09 21:33:06
不幸的是,您不能回到上一步来获取提供最大工资的stream元素;您必须通过一个属性来比较这些元素。
查找薪资最高的下属:
Employee max = Stream.of(manager, manager1)
.map(Employee::getChild)
.flatMap(Collection::stream)
.max(Comparators.comparing(Employee::getSalary))
.orElse(null);我假设了一个Employee类,以便可以使用方法引用,并将代码重构为一种更易用/更标准的方法,即通过流式传输管理器开始。
https://stackoverflow.com/questions/42696231
复制相似问题