【发布时间】:2019-07-29 17:23:47
【问题描述】:
我有一个类 Parcelle,它具有三个属性 num 和 nature 和 autre_nature。以及 Parcelle listParcelles 的列表。我正在使用 Java 8 Streams,我想要实现的是按 num 分组并返回具有非空 nature 和 autre_natureParcelle /em> 属性,否则只从组中随机返回一个 Parcelle。
Example :
Input:
ligneParcelles[[num=1,nature=TC,autre_nature=TCC],
[num=1,nature=TC,autre_nature=null],
[num=2,nature=TC,autre_nature=null],
[num=3,nature=TC,autre_nature=null],
[num=3,nature=Alpha,autre_nature=null],
[num=4,nature=TC,autre_nature=TC]
[num=4,nature=TC,autre_nature=null]]
Output :
ligneParcelles [[num=1,nature=TC,autre_nature=TCC],
[num=2,nature=TC,autre_nature=null],
[num=3,nature=Alpha,autre_nature=null],
[num=4,nature=TC,autre_nature=TC]]
为了分组,我使用了以下代码:
Map<String, List<Parcelle>> mapLignesParcelles = listParcelles.stream()
.collect(Collectors.groupingBy(lp->lp.getNum()+""));
但我不确定要使用什么来获得最终结果,我可以流式传输 mapLignesParcelles 键集,并且我想到了带有谓词 lp.getNature()!=null && lp.getAutre_Nature() !=null 的任何匹配,但是我该如何表达这个事实当谓词不成立时返回任何元素?
【问题讨论】:
-
如果单个
num有更多匹配lp.getNature()!=null && lp.getAutre_Nature() !=null怎么办? -
@Eugene 只是用 findFirst() 返回第一个,就像 Andrew 的回答一样
标签: java java-8 java-stream predicate