Java 8:映射列表包含列表

时间:2016-09-20 13:15:33

标签: java collections set java-stream

我的A1类有以下两个属性:

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);
    }
}

你有什么线索吗?
感谢。

1 个答案:

答案 0 :(得分:1)

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

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