2016-09-20 151 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());