java集合中最大值、平均值以及总和计算问题(BigDecimal类型)

取集合中的最大值、平均值以及总和

最大值(此处列举实体类中字段类型为BigDecimal)
实体类如下:

@ApiModel("实体类")
@Data
public class MFnnclChange implements Serializable {

    private BigDecimal money;
}

测试代码如下:

public static void main(String[] args){
        //定义集合  MFnnclChange指的是实体类
        List<MFnnclChange> mFnnclChangeList = new ArrayList<>();
        //new对象
        MFnnclChange mFnnclChange = new MFnnclChange();
        MFnnclChange mFnnclChange1 = new MFnnclChange();
        MFnnclChange mFnnclChange2 = new MFnnclChange();
        MFnnclChange mFnnclChange3 = new MFnnclChange();
        MFnnclChange mFnnclChange4 = new MFnnclChange();
        MFnnclChange mFnnclChange5 = new MFnnclChange();
        //给对象赋值
        mFnnclChange.setMoney(new BigDecimal(10));
        mFnnclChange1.setMoney(new BigDecimal(30));
        mFnnclChange2.setMoney(new BigDecimal(40));
        mFnnclChange3.setMoney(new BigDecimal(20));
        mFnnclChange4.setMoney(new BigDecimal(100));
        mFnnclChange5.setMoney(new BigDecimal(50));
        //将值添加到集合中去
        mFnnclChangeList.add(mFnnclChange);
        mFnnclChangeList.add(mFnnclChange1);
        mFnnclChangeList.add(mFnnclChange2);
        mFnnclChangeList.add(mFnnclChange3);
        mFnnclChangeList.add(mFnnclChange4);
        mFnnclChangeList.add(mFnnclChange5);
        //计算值
        BigDecimal max1 = mFnnclChangeList.stream().max(Comparator.comparing(MFnnclChange :: getMoney)).get().getMoney();
        System.out.println("最大值为: " + max1);
  }

若是直接从api查出的数据中取最大值,那你需要的代码可能就下面这一句话足以。

BigDecimal max1 = mFnnclChangeList.stream().max(Comparator.comparing(MFnnclChange :: getMoney)).get().getMoney();

说完了,看下效果图吧:
在这里插入图片描述
最大值到此结束,我们再来看看总和:
实体类还是不变,我们直接上测试代码吧:

 public static void main(String[] args) {
        //定义集合  MFnnclChange指的是实体类
        List<MFnnclChange> mFnnclChangeList = new ArrayList<>();
        //new对象
        MFnnclChange mFnnclChange = new MFnnclChange();
        MFnnclChange mFnnclChange1 = new MFnnclChange();
        MFnnclChange mFnnclChange2 = new MFnnclChange();
        MFnnclChange mFnnclChange3 = new MFnnclChange();
        MFnnclChange mFnnclChange4 = new MFnnclChange();
        MFnnclChange mFnnclChange5 = new MFnnclChange();
        //给对象赋值
        mFnnclChange.setMoney(new BigDecimal(10));
        mFnnclChange1.setMoney(new BigDecimal(30));
        mFnnclChange2.setMoney(new BigDecimal(40));
        mFnnclChange3.setMoney(new BigDecimal(20));
        mFnnclChange4.setMoney(new BigDecimal(100));
        mFnnclChange5.setMoney(new BigDecimal(50));
        //将值添加到集合中去
        mFnnclChangeList.add(mFnnclChange);
        mFnnclChangeList.add(mFnnclChange1);
        mFnnclChangeList.add(mFnnclChange2);
        mFnnclChangeList.add(mFnnclChange3);
        mFnnclChangeList.add(mFnnclChange4);
        mFnnclChangeList.add(mFnnclChange5);
        BigDecimal sumNewBrnchCd = mFnnclChangeList.stream().map(MFnnclChange::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
        System.out.println("该数据总和为: " + sumNewBrnchCd);

    }

和上面重复的一样,直接掉api,需要的代码只需要下面这一句话足矣:

BigDecimal sumNewBrnchCd = mFnnclChangeList.stream().map(MFnnclChange::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);

效果图奉上:
在这里插入图片描述
这么快就到最后了。我们一去看看平均值的计算吧。
废话不多说,直接上测试代码:

  public static void main(String[] args) {
        //定义集合  MFnnclChange指的是实体类
        List<MFnnclChange> mFnnclChangeList = new ArrayList<>();
        //new对象
        MFnnclChange mFnnclChange = new MFnnclChange();
        MFnnclChange mFnnclChange1 = new MFnnclChange();
        MFnnclChange mFnnclChange2 = new MFnnclChange();
        MFnnclChange mFnnclChange3 = new MFnnclChange();
        MFnnclChange mFnnclChange4 = new MFnnclChange();
        MFnnclChange mFnnclChange5 = new MFnnclChange();
        //给对象赋值
        mFnnclChange.setMoney(new BigDecimal(10));
        mFnnclChange1.setMoney(new BigDecimal(30));
        mFnnclChange2.setMoney(new BigDecimal(40));
        mFnnclChange3.setMoney(new BigDecimal(20));
        mFnnclChange4.setMoney(new BigDecimal(100));
        mFnnclChange5.setMoney(new BigDecimal(50));
        //将值添加到集合中去
        mFnnclChangeList.add(mFnnclChange);
        mFnnclChangeList.add(mFnnclChange1);
        mFnnclChangeList.add(mFnnclChange2);
        mFnnclChangeList.add(mFnnclChange3);
        mFnnclChangeList.add(mFnnclChange4);
        mFnnclChangeList.add(mFnnclChange5);
        
        BigDecimal avgNewBrnchCd = mFnnclChangeList.stream().map(MFnnclChange :: getMoney).reduce(BigDecimal.ZERO, BigDecimal :: add).divide(BigDecimal.valueOf(mFnnclChangeList.size()), 2, BigDecimal.ROUND_HALF_UP);
        System.out.println("该数据总条数为:" + mFnnclChangeList.size());
        System.out.println("平均数为: " + avgNewBrnchCd);

    }

多加了一条条数,可能看的更加详细吧…
更上面一样… 一行代码,我就不说了… 我们直接上测试结果吧
在这里插入图片描述

本篇到此结束,希望对你有益。至于类型不同,可能平均数写法可能不太一样,对于最大值,貌似没啥区别,只是接收类型一样罢了…

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值