waters.stream().collect(Collectors.toMap(WaterNodePotentialRespVo::getNode, e->e,(k1, k2)-> { //返回最大值 return k1.getWater()>k2.getWater()?k1:k2; })).forEach((k,v)->{ WaterNodeCRespVo respVo = new WaterNodeCRespVo(); respVo.setNode(k); respVo.setMaxWaterDepth(v.getWater()); respVo.setMaxTm(v.getTm()); respVo finalRespVos.add(respVo); }); 这里做了什么事情
时间: 2023-11-22 08:55:45 浏览: 125
WATERS公司的UPLC-TQD培训资料MSQuanLynx定量计算完美版资料.ppt
这段代码使用了Java 8的Stream API,对WaterNodePotentialRespVo对象列表进行操作,实现了以下功能:
1. 将WaterNodePotentialRespVo对象列表转换为Map,其中键为节点对象,值为WaterNodePotentialRespVo对象本身。
```
.collect(Collectors.toMap(WaterNodePotentialRespVo::getNode, e->e,(k1, k2)-> {
//返回最大值
return k1.getWater()>k2.getWater()?k1:k2;
}))
```
这里用到了`Collectors.toMap()`方法,`WaterNodePotentialRespVo::getNode`表示将节点对象作为Map的键,`e->e`表示将WaterNodePotentialRespVo对象本身作为Map的值,`(k1, k2)-> {return k1.getWater()>k2.getWater()?k1:k2;}`表示如果出现重复的键,取值最大的那个。
2. 遍历Map,生成WaterNodeCRespVo对象,并将其加入到finalRespVos列表中。
```
.forEach((k,v)->{
WaterNodeCRespVo respVo = new WaterNodeCRespVo();
respVo.setNode(k);
respVo.setMaxWaterDepth(v.getWater());
respVo.setMaxTm(v.getTm());
respVo
finalRespVos.add(respVo);
});
```
这里用到了`Map.forEach()`方法,对Map中的每个键值对进行遍历,生成WaterNodeCRespVo对象并加入到finalRespVos列表中。
阅读全文