gpt4 book ai didi

Java 8 FlatMap - 在嵌套表单中添加项目并使用 FlatMap 检索对象

转载 作者:行者123 更新时间:2023-11-30 06:07:46 24 4
gpt4 key购买 nike

我有一个对象Foo,其中包含Bar列表。这些类的描述如下:

class Foo {
String name;
List<Bar> bars = new ArrayList<Bar>();

Foo(String name){
this.name = name;
}
}

class Bar {
String name;

Bar(String name){
this.name = name;
}
}

现在,我正在创建一个 Foo 对象列表,每个对象都包含一个 Bar 对象列表,如下所示:

IntStream
.range(1, 4)
.forEach(i -> foos.add(new Foo("Foo" + i)));

foos.forEach(f ->
IntStream.range(1,4)
.forEach(i -> f.bars.add(new Bar("Bar"+i+" -> "+f.name))));

然后在 Stream 上使用 flatMap,如下所示:

foos.stream()
.flatMap(f -> f.bars.stream())
.forEach(i -> System.out.println("Bar Name : "+i.name));

如何使用 Java Stream 和 lambda 在一次执行中完成所有这些事情?有没有其他方法可以用 Java 8 风格做这样的事情?

最佳答案

如果您要做的就是打印 Bar 的名称实例,Foo的整个构建和集合和Bar实例已过时。您可以直接生成并打印名称:

IntStream.range(1, 4)
.mapToObj(i -> "Foo" + i)
.flatMap(name -> IntStream.range(1, 4)
.mapToObj(i -> "Bar" + i + "->" + name))
.forEach(System.out::println);

关于Java 8 FlatMap - 在嵌套表单中添加项目并使用 FlatMap 检索对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907150/

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