gpt4 book ai didi

foreach - 迭代嵌套集合以查找与条件匹配的第一个子子子元素

转载 作者:行者123 更新时间:2023-12-02 20:57:17 25 4
gpt4 key购买 nike

我有一个对象,其中包含其他对象的列表,每个其他对象都有一个列表等。我需要在层次结构中找到层次结构中第一个(也是唯一的)最后一个元素,该元素具有与某个值匹配的属性。看看我现在的代码会更清楚:

    @Override
public Poste findByNumeroAndMillesime(String numero, Millesime millesime) {
return millesime
.getDivisions()
.stream()
.filter(
division -> division
.getGroupes()
.stream()
.filter(
groupe -> groupe
.getClasses()
.stream()
.filter(
classe -> classe
.getSousClasses()
.stream()
.filter(
sousClasse -> sousClasse
.getPostes()
.stream()
.filter(poste -> numero.equals(poste.getNumero()))
.findFirst()
.get()
))));

}

我需要返回与作为参数传递的数字具有相同数字的 Poste。

提前致谢。

最佳答案

你可以尝试这样的 flatMap:

Optional<Postes> first = 
millesime.getDivisions()
.stream()
.flatMap(m -> m.getGroupes().stream())
.flatMap(m -> m.getClasses().stream())
.flatMap(m -> m.getSousClasses().stream())
.flatMap(m -> m.getPostes().stream())
.filter(postes -> numero.equals(postes.getNumero()))
.findFirst();

但是请注意,如果您有巨大的树,您可能会遇到问题,因为 flatMap 并不完全是懒惰的。请参阅:

关于foreach - 迭代嵌套集合以查找与条件匹配的第一个子子子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com