目录
-
用stream实现计算list的指定某个属性值的个数
举个例子:
coverageDetailList{
CoverageDetail{ base_url='/a/b/c/d', batchName=test', covered_by_url='/a/b/c/d'};
CoverageDetail{ base_url='/a/b/d', batchName=test', covered_by_url=null};
CoverageDetail{ base_url='/a/b/e', batchName=test', covered_by_url=null};
CoverageDetail{ base_url='/a/b/u', batchName=test', covered_by_url=null};
}
我想要计算这个coverageDetailList里面 covered_by_url=null 的有多少个。
coverageDetailList.stream().filter(coverageDetail -> Objects.isNull(coverageDetail.getCovered_by_url())).count()
-
用stream实现按某个属性值进行分组
举个例子:
coverageDetailList{ CoverageDetail{ application='AAA', base_url='/a/b/c/d','covered_by_url='/a/b/c/d'}; CoverageDetail{ application='AAA', base_url='/a/b/c','covered_by_url='/a/b/c'}; CoverageDetail{ application='AAA', base_url='/a/c/d/s','covered_by_url=null}; CoverageDetail{ application='BBB', base_url='/b/c/d/e','covered_by_url='/b/c/d/e'}; CoverageDetail{ application='CCC', base_url='/c/d/e','covered_by_url='/c/d/e'}; }我想要按application进行分组,变成以下这样:
key:'AAA', value:[CoverageDetail{ application='AAA', base_url='/a/b/c/d','covered_by_url='/a/b/c/d'};CoverageDetail{ application='AAA', base_url='/a/b/c','covered_by_url='/a/b/c'};CoverageDetail{ application='AAA', base_url='/a/c/d/s','covered_by_url=null};]
key:'BBB', value:[CoverageDetail{ application='BBB', base_url='/b/c/d/e','covered_by_url='/b/c/d/e'};]
key:'CCC', value:[CoverageDetail{ application='CCC', base_url='/c/d/e','covered_by_url='/c/d/e'};]
Map<String, List<CoverageDetail>> coverageDetailDomainList =
coverageDetailList.stream().collect(Collectors.groupingBy(CoverageDetail::getApplication));
-
用stream判断list里面是否存在符合条件的值
whitelistItems.stream().anyMatch(whiteListItem -> application.equalsIgnoreCase(whiteListItem.getApplication()));