2016-09-20 112 views
0

A1类有这2个属性:的Java 8:映射列表inisde列表

private String hour; 
private List<A2> list; 

A2类:

private String code; 
private List<A3> list; 

我想要做的是找到与Java 8更漂亮的方式写这个:

Set<MyObject> set = new HashSet<MyObject>(); 
for (A1 pes : a1.getList()) { 
    for (A2 pe : a2.getList()) { 
     MyObject bppc = new MyObject (a2.getCode(), a1.getHour()); 
     set.add(bppc); 
    } 
} 

你有什么线索吗?
谢谢。

+0

我发现代码是可读的不足够的Java 8的功能。 – manouti

+1

你确定你想要很多平等的物体吗?你不使用你在for循环中定义的变量。你的类字段并不真正匹配代码片段和for循环。 – marstran

回答

1

我发现你的版本已经可读了,所以我不认为我会用流重写它。然而,这里是使用流反正一个解决方案:

a1.getList() 
    .stream() 
    .flatMap(pes -> 
     a2.getList() 
      .stream() 
      .map(pe -> new MyObject(a2.getCode(), a1.getHour()))) 
    .collect(Collectors.toSet());