1. 程式人生 > 實用技巧 >lambda java 例項 - 迴圈集合資料操作目標值

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)hashCopyBookBO.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拼接迴圈資料