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个数")
相关推荐
亦是远方1 小时前
C++编译过程
java·开发语言·c++
Lojarro1 小时前
【Tomcat】第二站:Tomcat通过反射机制运行项目
java·tomcat
【上下求索】1 小时前
学习笔记069——Java集合框架
java·集合
.生产的驴2 小时前
Docker Compose 多应用部署 一键部署
java·运维·后端·spring cloud·docker·容器·gateway
上海拔俗网络2 小时前
“AI数据生成系统:创造数据新动力
java·团队开发
冰之杍2 小时前
springboot2升级到springboot3过程相关修改
java·spring boot
珂朵莉MM2 小时前
第六届全球校园人工智能算法精英大赛-算法巅峰专项赛(系列文章)-- 开篇
java·人工智能·python·算法·职场和发展
drebander2 小时前
手撕 HttpClient:自己实现简单的 HTTP 请求工具
java·网络