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个数")
相关推荐
Sarvartha6 小时前
final 关键字
java·开发语言
2601_952047797 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
数据狐(Datafox)7 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
Escalating_xu9 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
灯澜忆梦9 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
一个风轻云淡10 小时前
GCC 和 GDB命令简单解读
java·linux·前端
省钱兄--zs10 小时前
西安24小时自助健身房解决方案实战:系统开发与部署全流程指南
java·spring boot·系统架构·intellij-idea·需求分析
资料库0110 小时前
Linux 8个常见运维故障排查
java·linux·运维