将嵌套for循环重构为Java 8流

时间:2016-01-04 11:20:15

标签: java java-8 java-stream

我有以下for循环:

    List<Map> mapList = new ArrayList<>();
    for (Resource resource : getResources()) {
        for (Method method : resource.getMethods()) {
            mapList.add(getMap(resource,method));
        }
    }
    return mapList;

我如何将这个嵌套循环重构为Java 8流?

1 个答案:

答案 0 :(得分:11)

您可以使用flatMap获取所有Map的所有Method的所有Resource

List<Map> mapList = 
    getResources().stream()
                  .flatMap(r->r.getMethods().stream().map(m->getMap(r,m)))
                  .collect(Collectors.toList());

Java stream Map 功能用于将对象从一种形式映射到相同或不同类型的其他形式。

Java stream flatmap 函数用于映射嵌套对象。

有关详细信息,请访问Java 8 stream flat map