stream如何实现分组后,多个字段分别求和?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

stream如何实现分组后,多个字段分别求和?

李博 bluemind 2019-04-24 15:43:16 3731

比如user对象,我用性别分组,怎么即算出年龄总和,又算出身高总和

本问题来自云栖社区【阿里Java技术进阶2群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

Java
分享到
取消 提交回答
全部回答(2)
  • 晓星加油
    2019-09-04 16:54:20
    推荐

    参考如下假例代码,请修改再实现:

            List<UserDTO> users = userMapper.getUserAllListFromDb();
            Map<Integer, List<UserDTO>> mapList = users.stream().collect(Collectors.groupingBy(UserDTO::getGender));
            List<UserDTO> manUserList = mapList.get("1"); //假设代表男
            BigDecimal ageTotal = manUserList.stream().map(UserDTO::getAge).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
            BigDecimal lengthTotal = manUserList.stream().map(UserDTO::getLength).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
            System.out.println("总年龄:" + ageTotal);
            System.out.println("总身高:" + lengthTotal);
    
    0 0
  • s1ahs3r
    2019-07-17 23:34:11

    可以做一个 computeIfAbsent

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题