List<Bean> List<Map>计算某个字段的合计

1. List<Bean

java 复制代码
   public static <T> BigDecimal summary(List<T> list, Function<T, BigDecimal> getFieldFunction) {
        Optional<List<T>> optionalList = Optional.ofNullable(list);

        return optionalList.map(lst -> lst.stream()
                        .filter(Objects::nonNull) // 过滤掉空对象
                        .map(getFieldFunction)
                        .filter(Objects::nonNull) // 过滤掉提取的BigDecimal值为空的情况
                        .reduce(BigDecimal.ZERO, BigDecimal::add))
                .orElse(BigDecimal.ZERO);
    }

用法

java 复制代码
        BigDecimal collectServiceFee = ListUtils.summary(temuFinanceData, TemuFinanceData::getCollectServiceFee);

2.List<Map

java 复制代码
    /**
     * 汇总某个字段的值
     * @param list
     * @param type
     * @return
     */
    public static BigDecimal summary(List<Map<String, Object>> list, String type) {
        BigDecimal result = BigDecimal.ZERO;
        if (CollectionUtils.isNotEmpty(list)) {
            result = new BigDecimal(list.stream().mapToDouble(v -> v.get(type) != null ? Double.parseDouble(v.get(type).toString()) : 0).sum());
        }
        return result;
    }

用法

java 复制代码
ListUtils.summary(result, "主SKU个数")
相关推荐
神秘的t几秒前
javaSE————网络原理
java·网络
hongweihao3 分钟前
啥?有分布式锁都还能被突破
java·后端
BeerBear4 分钟前
记一次Kill <Pid> Java进程无法退出的问题处理
java·后端·spring
Seven9739 分钟前
【Guava】IO工具
java
独行soc44 分钟前
2025年渗透测试面试题总结-某腾某讯-技术安全实习生升级(题目+回答)
java·python·安全·web安全·面试·职场和发展·红蓝攻防
用键盘当武器的秋刀鱼1 小时前
springBoot统一响应类型3.5.3版本
java·spring boot·spring
qq_431510161 小时前
tomcat组件概览
java·tomcat
栗筝i1 小时前
Spring 核心技术解析【纯干货版】- XVII:Spring 网络模块 Spring-WebFlux 模块精讲
java·网络·spring
工业互联网专业1 小时前
基于springcloud微服务架构的巡游出租管理平台
java·vue.js·spring cloud·微服务·毕业设计·源码·课程设计
cwtlw2 小时前
Spring相关面试题总结
java·笔记·后端·spring