Refactoring nested for loop into Java 8 stream

人走茶凉 提交于 2019-12-01 10:01:59

问题


I have the following for loop:

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

How could I refactor this nested loop into a Java 8 stream?


回答1:


You can use flatMap to obtain all the Maps for all Methods of all Resources :

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


来源:https://stackoverflow.com/questions/34589980/refactoring-nested-for-loop-into-java-8-stream

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!