通过stream流统计数据(多种方式)

1、统计集合中recruitmentPropertyName属性值为“正式工”的数量:

resultList.stream()
                .filter(item -> Optional.ofNullable(item.getRecruitmentPropertyName()).orElse("").compareTo("正式工") == 0)
                .collect(Collectors.toList()).stream()
                .count()

2、统计集合中educationalQualificationName属性值为“研究生”、“博士”的数量:

String [] postgraduates ={"硕士研究生","博士研究生"};

resultList.stream()
                .filter(item -> Arrays.asList(postgraduates).contains(Optional.ofNullable(item.getEducationalQualificationName()).orElse("")))
                .collect(Collectors.toList()).stream()
                .count());

3、统计集合中 BigDecimal 类型的 originalValue字段 的总和:

resultList.stream()
                .filter(e -> !ObjectUtils.isEmpty(e.getOriginalValue()))//过滤掉空值
                .map(DmShipBaseInfo::getOriginalValue)//获取OriginalValue字段值
                .reduce(BigDecimal.ZERO, BigDecimal::add)//聚合相加
                .divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros() //除以10000,四舍五入保留两位小数,去除末尾0

4、统计集合中去掉id重复数据之后的总数:

resultList.stream()
                .map(r -> r.getId()).distinct()
                .collect(Collectors.toList())
                .size()

你可能感兴趣的:(java)