lambda java 例項 - 迴圈集合資料操作目標值
阿新 • • 發佈:2020-09-08
原始碼
//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拼接迴圈資料