gpt4 book ai didi

java - 嵌套集合 lambda 迭代

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:58 24 4
gpt4 key购买 nike

假设我有一个包含集合的对象,该集合中的每个元素都包含一个集合,每个集合又包含一个集合。

我想迭代最深的对象并对其应用相同的代码。

命令式方式很简单,但有没有办法让这一切都变成 lambda 式?

代码如下所示:

My object o;
SecretType computedThingy = 78;
for (FirstLevelOfCollection coll : o.getList()) {
for (SecondLevelOfCollection colColl : coll.getSet()) {
for (MyCoolTinyObjects mcto : colColl.getFoo()) {
mcto.setSecretValue(computedThingy);
}
}
}

我可以看到如何从最深的循环中创建一个 lambda:

colColl.getFoo().stream().forEach(x -> x.setSecretValue(computedThingy)

但是我可以做更多吗?

最佳答案

flatMap可用于此目的。你在这里得到的是迭代各种最深集合的所有元素,就好像它们是一个集合:

o.getList().stream()
.flatMap(c1 -> c1.getSet().stream())
.flatMap(c2 -> c2.getFoo().stream())
.forEach(x -> x.setSecretValue(computedThingy));

关于java - 嵌套集合 lambda 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43981669/

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