首页 > 编程语言 >Java-List集合字段求和函数

Java-List集合字段求和函数

时间:2022-08-24 08:11:45浏览次数:73  
标签:function predicate Java 函数 求和 List param targetList

修订记录 版本 是否发布
2020-01-25 v1.0

一、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();
  }
}

标签:function,predicate,Java,函数,求和,List,param,targetList
From: https://www.cnblogs.com/BCX-1024/p/javalist-ji-he-zi-duan-qiu-he-han-shu.html

相关文章

  • JavaSE的基础
    初始Java1.核心机制:垃圾收集器、跨平台2.JDK、JRE、JVM数据类型1.变量和常量字面常量、字符常量2.基本数据类型:byte1、short2、int4、long8、float4、double8、char2......
  • 【Java学习day04】Hello World
    HelloWorld随便新建一个文件夹,存放代码在新建的文件夹里新建一个java文件新建一个文本文档将新建的文本文档重命名为hello.java注意了!后缀必须改为.java并保存......
  • Java基本语法
    >JAVA基本语法标识符定义:凡是自己可以起名字的地方都叫标识符。涉及到的结构:包名、类名、接口名、方法名、变量名、常量名。标识符命名规则:(必须遵守,否则编译不通过)1.......
  • Java 运行时数据区
    Java运行时数据区堆线程栈本地方法栈方法区程序计数器我们的java文件,首先编译成class文件。通过类加载器加载到我们的Java虚拟机。Java虚拟机中,最大的一块是运行......
  • Java06-包机制&JavaDoc文档
    包机制为了更好的组织类,Java提供了包机制,用于区别类名的命名空间(等同于文件夹)一般利用公司域名倒置作为包名eg:com.baidu.www(会生成树状子目录)包语句的格式:packagepac......
  • Java项目生成电脑桌面快捷脚本
    一、场景说明经常需要查询以及设置手机验证码,一般验证码都是放在Redis,为了节省短信费,可以直接设置Redis,本篇内容主要介绍如何便捷查询和设置手机验证码,非开发人员也会......
  • day24--Java集合07
    Java集合0714.HashMap底层机制(k,v)是一个Node,实现了Map.Entry<K,V>,查看HashMap的源码可以看到jdk7.0的HashMap底层实现[数组+链表],jdk8.0底层[数组+链表+红黑树]14.......
  • AtCoder Beginner Contest 263(Java)
    A题桶排序1importjava.util.*;2publicclassMain{3publicstaticvoidmain(String[]args){4Scannersc=newScanner(System.in);5......
  • centos8 安装 oracle11 报错(Could not create the Java virtual machine)
    centos8安装oracle11报错TherewasanerrortryingtoinitializetheHPIlibrary.Pleasecheckyourinstallation,HotSpotdoesnotworkcorrectlywheninsta......
  • java springboot 初体验 (十)对接ut
    上一篇javaspringboot初体验(九)对接http请求https://www.cnblogs.com/zwjvzwj/p/16614205.htmlpom文件添加依赖包<!--自动查找主类用于打包和jacoco的......