Java-List集合字段求和函数

一、FunctionCustom通用求和函数使用示例

特点:

简化代码量

防止集合及值的空指针

// 实例化函数
FunctionCustom<GetSalesDataReportsServiceOutputDto> functionCustom = new FunctionCustom<>();

//使用-》对 clueTodayCount 值求和
functionCustom.functionListLongSum(dtoEntityValue, en ->StringUtils.isNotNull(en.getClueTodayCount()),GetSalesDataReportsServiceOutputDto::getClueTodayCount)

二、求和函数

package com.bqx.bi.cluereport.util.functioncus;

import com.google.common.collect.Lists;
import java.util.List;
import java.util.Optional;
import java.util.function.Predicate;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;

/**
 * @author (kevin).
 * @title bqx-bi.
 * @package com.bqx.bi.cluereport.util.functioncus.
 * @description 自定义函数.
 * @date 2021/1/20.
 */
public class FunctionCustom<T> {

  /**
   * Long求和函数.
   *
   * @param targetList list
   * @param predicate 过滤函数.
   * @param function 求和函数.
   * @return 求和值.
   */
  public Long functionListLongSum(List<T> targetList, Predicate<? super T> predicate,
      ToLongFunction<? super T> function) {
    return Optional.ofNullable(targetList).orElse(Lists.newArrayList()).parallelStream().filter(predicate)
        .mapToLong(function).sum();
  }

  /**
   * int求和函数.
   *
   * @param targetList list
   * @param predicate 过滤函数.
   * @param function 求和函数.
   * @return 求和值.
   */
  public int functionListIntSum(List<T> targetList, Predicate<? super T> predicate, ToIntFunction<? super T> function) {
    return Optional.ofNullable(targetList).orElse(Lists.newArrayList()).parallelStream().filter(predicate)
        .mapToInt(function).sum();
  }

  /**
   * Double求和函数.
   *
   * @param targetList list
   * @param predicate 过滤函数.
   * @param function 求和函数.
   * @return 求和值.
   */
  public Double functionListDoubleSum(List<T> targetList, Predicate<? super T> predicate,
      ToDoubleFunction<? super T> function) {
    return Optional.ofNullable(targetList).orElse(Lists.newArrayList()).parallelStream().filter(predicate)
        .mapToDouble(function).sum();
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值