专栏首页cwl_JavaJava工具集-统计学工具类

Java工具集-统计学工具类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102897733

简单工具类

写作初衷:由于日常开发经常需要用到很多工具类,经常根据需求自己写也比较麻烦 网上好了一些工具类例如commom.lang3或者hutool或者Jodd这样的开源工具,但是 发现他们之中虽然设计不错,但是如果我想要使用,就必须要引入依赖并且去维护依赖,有些 甚至会有存在版本编译不通过问题,故此想要写作一个每个类都可以作为独立工具类使用 每个使用者只需要复制该类,到任何项目当中都可以使用,所以需要尊从以下两个原则才能 做到.在此诚邀各位大佬参与.可以把各自用过的工具,整合成只依赖JDK,每个类都能够单独 使用的工具.每个人当遇到业务需求需要使用的时候,只需要到这里单独拷贝一个即可使用. 抛弃传统的需要引入依赖的烦恼.让大家一起来解决你所面临的业务问题吧!

介绍

遵从两大原则

  • 1.绝不依赖JDK以外的源码
  • 2.牺牲代码复用性,每个类都必须是单独的组件,绝不互相引用,做到完全解耦
package *;

import java.util.ArrayList;
import java.util.List;

/**
 * @program: simple_tools
 * @description: 统计学工具类
 * @author: ChenWenLong
 * @create: 2019-11-04 13:44
 **/
@SuppressWarnings("unchecked")
public class StatisticsUtil {

    /**
     * 功能描述:
     * 〈获取中位数〉
     *
     * @params : [numberList]
     * @return : java.util.List<java.lang.Integer>
     * @author : cwl
     * @date : 2019/11/4 14:40
     */
    public static List<Number> getMedian(List<? extends Number> numberList){
        if(null == numberList || numberList.size() == 0){
            throw new RuntimeException("numberList is not be empty or null");
        }
        List<Number> resultList = new ArrayList<>();
        if(numberList.size() % 2 == 0){
            int a = numberList.size()/2;
            int b = numberList.size()/2 - 1;
            resultList.add(numberList.get(a));
            resultList.add(numberList.get(b));
        }else{
            resultList.add(numberList.get(numberList.size()/2));
        }
        return resultList;
    }

    /**
     * 功能描述:
     * 〈获取平均值〉
     *
     * @params : [numberList]
     * @return : java.util.List<java.lang.Number>
     * @author : cwl
     * @date : 2019/11/4 14:45
     */
    public static Number getAverage(List<? extends Number> numberList){
        if(null == numberList || numberList.size() == 0){
            throw new RuntimeException("numberList is not be empty or null");
        }
        double v = getSum(numberList).doubleValue();
        return v / numberList.size();
    }

    /**
     * 功能描述:
     * 〈求和〉
     *
     * @params : [numberList]
     * @return : java.util.List<java.lang.Number>
     * @author : cwl
     * @date : 2019/11/4 14:47
     */
    public static Number getSum(List<? extends Number> numberList){
        if(null == numberList || numberList.size() == 0){
            throw new RuntimeException("numberList is not be empty or null");
        }
        Number result = new Number() {
            @Override
            public int intValue() {
                return 0;
            }

            @Override
            public long longValue() {
                return 0;
            }

            @Override
            public float floatValue() {
                return 0;
            }

            @Override
            public double doubleValue() {
                return 0;
            }
        };
        long longResult = 0;
        int intResult = 0 ;
        double doubleResult = 0;
        float floatResult = 0;
        for (Number number : numberList) {
            if(number.longValue() != 0){
                longResult = longResult + number.longValue();
            }
            if(number.doubleValue() != 0){
                doubleResult = doubleResult + number.doubleValue();
            }
            if(number.intValue() != 0){
                intResult = intResult + number.intValue();
            }
            if(number.floatValue() != 0){
                floatResult = floatResult + number.floatValue();
            }
        }
        return longResult + intResult + doubleResult + floatResult;

    }


}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java工具集-Spring工具(获取Spring容器中的Bean对象)

    cwl_java
  • 快速学习-负载均衡Robbin

    在刚才的案例中,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问。

    cwl_java
  • Java工具集-IDEA插件开发

    cwl_java
  • OpenStack Neutron之持续测试

    一.OpenStack持续测试概述 众所周知,OpenStack作为一个特大型软件开发项目,有着数千人的开发人员,每天要处理千计提交的代码,几千条Gerrit评...

    SDNLAB
  • TMQ第五期沙龙回顾|Selenium自动化测试框架

    HTTP接口测试平台构建和运行 活动时间:2016年7月28日 QQ群视频交流 活动介绍: TMQ QQ群沙龙第四期分享 本次分享的主题是H...

    腾讯移动品质中心TMQ
  • DevOps 与技术雷达

    ? 关于 Kubernetes Kubernetes 现在是当仁不让的首选容器编排平台,在技术雷达中,也将其标记为采用。社区也发展出很多 Kubernete...

    DevOps时代
  • 37.Django1.11.6文档

    第一步 入门 检查版本 python -m django --version 创建第一个项目 django-admin startproject mysite ...

    zhang_derek
  • 软件测试工程师的技能树

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 这可能是将String.format格式化讲解的最清楚的一篇文章

    String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言应该记得C语言的sprintf()方法,两者有类似之处。format...

    JAVA葵花宝典
  • 这可能是将String.format格式化讲解的最清楚的一篇文章

    String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言应该记得C语言的sprintf()方法,两者有类似之处。format...

    lyb-geek

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动