【Java8】 stream 使用

这篇博客介绍了如何在Java中合并包含List属性的对象,并展示了使用Stream API对List进行分组计算的示例。通过map和flatMap操作合并对象中的details属性,然后利用collect方法收集到一个List中。同时,文章还展示了如何对List数据进行分组统计,计算每个分组内元素的特定属性比例,并存储到Map中。
摘要由CSDN通过智能技术生成

1.合并对象中属性为List的情况

对象结构(示例):

"report" : {
	"reportDate" : "2022-04-24",
	"alive" : 223,
	"details" : [ 
		{
			"alive": 100
		},
		{
			"alive": 123
		}
	]
}

合并对象中details为一个List的代码如下(示例):

 List<Detail> detailList = reportList.stream()
                                     .map(Report::getDetials)
                                     .flatMap(Collection::stream)
                                     .collect(Collectors.toList())

2.List groupBy后按照一定计算方法,处理计算value的List

        // TODO 应该还有更方便的方式
        List<RecData> dataList = baseMapper.selectList();
        Map<String, Integer> result = new HashMap<>();
        // 数据分组统计处理
        dataList.parallelStream()
                .collect(Collectors.groupingBy(item -> item.getType(), Collectors.toList())) // TODO
                .forEach((type, transfer) -> {
                    int subNum = transfer.stream().mapToInt(RecData::getSubNum).sum();
                    int totalNum = transfer.stream().mapToInt(RecData::getTotalNum).sum();
                    result.put(type, subNum / totalNum);
                });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值