嵌套的Java 8用于循环和条件

我在将这个for循环简化为Java 8中的流时遇到麻烦,该流的输出与该for循环不匹配


for (Object1 ob1s : getObject1s){

            if (ob1s.hasChild != null){

                map1.get(ob1holder).add(ob1s);

                if(Objects.equals(ob1.getHolder, Boolean.TRUE))

                {

                    map1.get(ob11holder).add(ob1s.getID);

                }

                if (ob1s.getObject2 != null){

                for (Object2 ob2 : ob1s.getObject2.getObjects){

                    map.get(ob2holder).add(ob2);

                }

            }

        }

}

尝试:


getObject1s.stream()

                .filter(ob1s -> ob1s.hasChild != null)

                .map(ob1s ->

                    {map.get(ob1holder).add(ob1s);

                    if (Objects.equals(ob1.getHolder, Boolean.TRUE))

                        { map.get(ob11holder).add(ob1s.getID);}

                    return ob1s;})

                .filter(ob1s -> ob1s.getObject2 != null)

                .flatMap(ob1s -> ob1s.getObject2.getObjects.stream())

                .map(ob2 -> map.get(ob2holder).add(ob2));


沧海一幻觉
浏览 149回答 1
1回答

芜湖不芜

流中没有终端操作,因此不执行流。getObject1s.stream()        .filter(ob1s -> ob1s.hasChild != null)        .forEach(ob1s ->{            map1.get(ob1holder).add(ob1s);            if(Boolean.TRUE.equal(ob1.getHolder)){  //null safe                map1.get(ob11holder).add(ob1s.getID);            }            if (ob1s.getObject2 != null){              ob1s.getObject2.getObjects.stream()                     .forEach(ob2 -> map.get(ob2holder).add(ob2));            }    })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java