gpt4 book ai didi

Java 8 Stream API 等效于嵌套 for 循环

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

是否可以用单个 Java8 Stream API 指令代替嵌套的 for 循环来替换此示例中执行的处理?

 public static void main(String[] args) {
List<BeanA> aList = Arrays.asList(new BeanA(), new BeanA(), new BeanA());
List<BeanB> bList = Arrays.asList(new BeanB(), new BeanB(), new BeanB());

List<Bean> result = new ArrayList<>();
for (BeanA a : aList) {
for (BeanB b : bList) {
result.add(new Bean(a, b));
}
}
System.out.println("size:" + result.size());
System.out.println("result:" + result);
}

public static class BeanA {
}

public static class BeanB {
}

public static class Bean {
private BeanA a;
private BeanB b;

public Bean(BeanA a, BeanB b) {
this.a = a;
this.b = b;
}
}

最佳答案

您可以使用 Stream 来实现,但即使使用 Stream 也无法避免嵌套迭代,因为您想要生成 aList.size () * bList.size() Bean 的实例。

List<Bean> result =
aList.stream()
.flatMap(a->bList.stream().map(b->new Bean(a,b)))
.collect(Collectors.toList());

关于Java 8 Stream API 等效于嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998579/

24 4 0