lambda java 实例 - 循环集合数据操作目标值

源代码

    //pooo 是一个复合vo 代表一组数据的集合,内部包含其他vo和list,代码的目的是循环vo内部的数据 选出符合条件的特定数据
    Map<Long,List<String>> paaaaaMap=
                pooo.getpaaaaas().stream().filter(paaaaa -> paaaaa.getcooooooos()!=null).filter(paaaaa-> paaaaa.getpooorrrrs()!=null).filter(paaaaa-> paaaaa.getpooorrrrs().stream().
            anyMatch(pooorrrr -> Arrays.asList(fbbbbrolesArray).contains(pooorrrr.getpaaaaaRole()))).
            filter(paaaaa -> paaaaa.getcooooooos().stream().filter(Objects::nonNull).anyMatch(cooooooo -> cooooooo.getContactType() == 777&&
            cooooooo.getcooooooo()!=null&&!cooooooo.getcooooooo().trim().isEmpty())).
                collect(Collectors.toMap(paaaaa::getpaaaaaOID, paaaaa->paaaaa.getpooorrrrs().stream().map(pooorrrr::getpaaaaaRole).collect(Collectors.toList())));
         
        //  二次循环的目的是用map数据作为key获取外部数据
        Map<String,String> alertMap=
                paaaaaMap.entrySet().stream().collect(Collectors.toMap(paaaaa->(String)hashmap.get(paaaaa.getKey()+"CCCCNUM"),
                paaaaa->paaaaa.getValue().stream().reduce((one,tow)-> one+=tow).get()));

分解

    //pooo 是一个复合vo 代表一组数据的集合,内部包含其他vo和list,代码的目的是循环vo内部的数据 选出符合条件的特定数据
    Map<Long,List<String>> paaaaaMap=
                pooo.getpaaaaas().stream() //获取二层vo 并stream化
.filter(paaaaa
-> paaaaa.getcooooooos()!=null).filter(paaaaa-> paaaaa.getpooorrrrs()!=null) //第三层list校验
.filter(paaaaa-> paaaaa.getpooorrrrs().stream(). //这里用filter检验 anymatch里返回的布尔类型数据 anyMatch(pooorrrr -> Arrays.asList(fbbbbrolesArray).contains(pooorrrr.getpaaaaaRole()))).//anymatch 返回一组循环里是否有一个符合,有就是true filter(paaaaa -> paaaaa.getcooooooos().stream().filter(Objects::nonNull).anyMatch(cooooooo -> cooooooo.getContactType() == 777&& cooooooo.getcooooooo()!=null&&!cooooooo.getcooooooo().trim().isEmpty())).//这里过滤的是三层list里的四层vo数据 collect(Collectors.toMap(paaaaa::getpaaaaaOID, paaaaa->paaaaa.getpooorrrrs().stream().map(pooorrrr::getpaaaaaRole).collect(Collectors.toList())));//最后合成map // 二次循环的目的是用map数据作为key获取外部数据 Map<String,String> alertMap= paaaaaMap.entrySet().stream().collect(Collectors.toMap(paaaaa->(String)hashmap.get(paaaaa.getKey()+"CCCCNUM"), paaaaa->paaaaa.getValue().stream().reduce((one,tow)-> one+=tow).get()));//reduce拼接循环数据

 

posted @ 2020-09-08 11:32  大哥超帅  阅读(675)  评论(0编辑  收藏  举报