我正在努力实现以下目标: 给出一个对象列表。返回起始符合条件的5个对象。
我能够第一个元素:
optionServiceObject.map((p) -> (List<ServiceAttribute>) p.getFoor())
.flatMap((v2) -> v2.stream().filter((v3) -> v3.hasBar())
.map(v3 -> v3.getBar())
.findFirst()
但无法获得,如何将标准与标准匹配到列表中。
答案 0 :(得分:2)
如果您想获得对象编号5,请使用skip(4)
跳过前四个对象:
Optional<Bar> fifthObject = optionServiceObject
.map((p) -> (List<ServiceAttribute>) p.getFoor())
.flatMap((v2) -> v2.stream().filter((v3) -> v3.hasBar())
.map(v3 -> v3.getBar())
.skip(4)
.findFirst();
如果您的匹配对象少于5个,结果将为空。
如果您想获得最多5个匹配对象,请使用limit(5)
并将结果收集到List
:
List<Bar> fiveObjects = optionServiceObject
.map((p) -> (List<ServiceAttribute>) p.getFoor())
.flatMap((v2) -> v2.stream().filter((v3) -> v3.hasBar())
.map(v3 -> v3.getBar())
.limit(5)
.collect(Collectors.toList());