Java stream流用法总结

78 阅读1分钟

3.分组统计计数

HashMap<Long, Long> proxyNumMap = relations.stream().collect(Collectors.groupingBy(TbShopProductRelation::getShopUserId, HashMap::new, Collectors.counting()));

4 . 对 分页数据多条件分组

Wrapper wr = new EntityWrapper<>();

if (StringUtil.isNotNull(keyWords)) {

wr.like("role_name", keyWords);

}

Page pageEntity = new Page<>();

pageEntity.setCurrent(page < 1 ? 1 : page);

pageEntity.setSize(page < 1 ? 10 : pageSize);

Page tbMemberDeductionSettingPage = tbMemberDeductionSettingService.selectPage(pageEntity, wr);

List records = tbMemberDeductionSettingPage.getRecords();

if (records.isEmpty()) {

return new R<>(tbMemberDeductionSettingPage);

}

Page memberDeductionSettingDtoPage = new Page<>();

// 分组统计

Map<String, List> collect = records.stream().collect(Collectors.groupingBy(m -> m.getLevelId() + "_" + m.getUserTypeId()));

List settingDtos = collect.keySet().stream().map(m -> {

TbMemberDeductionSettingDto tbMemberDeductionSettingDto = new TbMemberDeductionSettingDto();

String[] s = m.split("_");

String levelId = s[0];

String userTypeId = s[1];

List tbMemberDeductionSettings = collect.get(m);

List collect1 = tbMemberDeductionSettings.stream().map(t -> {

MemberDeductionSettingDto memberDeductionSettingDto = new MemberDeductionSettingDto();

memberDeductionSettingDto.setId(t.getId());

memberDeductionSettingDto.setDeductionMoney(t.getDeductionMoney());

memberDeductionSettingDto.setDeductionTypeId(t.getDeductionTypeId());

memberDeductionSettingDto.setDeductionTypeName(t.getDeductionTypeName());

memberDeductionSettingDto.setDeductionValue(t.getDeductionValue());

return memberDeductionSettingDto;

}).collect(Collectors.toList());

tbMemberDeductionSettingDto.setRoleName(tbMemberDeductionSettings.get(0).getRoleName());

tbMemberDeductionSettingDto.setLevelName(tbMemberDeductionSettings.get(0).getLevelName());

tbMemberDeductionSettingDto.setLevelId(Integer.parseInt(levelId));

tbMemberDeductionSettingDto.setUserTypeId(Integer.parseInt(userTypeId));

tbMemberDeductionSettingDto.setList(collect1);

return tbMemberDeductionSettingDto;

}).collect(Collectors.toList());

memberDeductionSettingDtoPage.setRecords(settingDtos);

memberDeductionSettingDtoPage.setTotal(tbMemberDeductionSettingPage.getTotal());

return new R<>(memberDeductionSettingDtoPage);

5.累加int型

int orders= list.stream().mapToInt(IncomeInfoDto::getRecommendAnchorAssociateOrders).sum();

6.过滤分割集合

List collect = shopInfoList.stream().map(s -> {

UserAttentionDto userAttentionDto = new UserAttentionDto();

userAttentionDto.setUserId(userId);

return userAttentionDto;