是否可以使用单个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;
}
}
答案 0 :(得分:4)
您可以使用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());