Java 8流API相当于嵌套for循环

Java 8流API相当于嵌套for循环,java,lambda,java-8,Java,Lambda,Java 8,是否可以用单个Java8流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());

是否可以用单个Java8流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;
    }
}
publicstaticvoidmain(字符串[]args){
List aList=Arrays.asList(new BeanA(),new BeanA(),new BeanA());
List bList=Arrays.asList(new BeanB(),new BeanB(),new BeanB());
列表结果=新建ArrayList();
对于(BeanA a:aList){
对于(BeanB:bList){
添加(新Bean(a,b));
}
}
System.out.println(“大小:+result.size());
System.out.println(“结果:+result”);
}
公共静态类BeanA{
}
公共静态类BeanB{
}
公共静态类Bean{
私人BeanA a;
私人银行;
公共豆(豆豆a、豆豆b){
这个a=a;
这个.b=b;
}
}

您可以使用
s来完成,但即使使用
s,您也无法避免嵌套迭代,因为您希望生成
Bean
aList.size()*bList.size()
实例

List<Bean> result =
    aList.stream()
         .flatMap(a->bList.stream().map(b->new Bean(a,b)))
         .collect(Collectors.toList());
列出结果=
流()
.flatMap(a->bList.stream().map(b->newbean(a,b)))
.collect(Collectors.toList());

哦,我尝试了两个flatMap调用,但没有想到这样嵌套lambda。谢谢:)Hell eclipse,它可以用Javac和IntelliJ IDEA进行很好的编译,但不能用eclipse进行编译,因为它的结果是列表而不是列表…@Toilal您使用的是哪种eclipse?它在我的Mars 4.5.1中编译得很好。我在eclipse编译器中使用IntelliJ IDEA 15,它也失败了,但我不知道它嵌入了哪个编译器版本。我也可以用Luna复制它。这可能是一个固定的错误,如果它与火星工作@只需添加显式类型参数:
.flatMap(…)
,它也可以在Eclipse中正常工作。