map集合-stream流-BigDecimal
可能大伙儿经常遇到一些需要计算的字段,但是处理起来又听麻烦的,我这边正好整理了一点点,随便发一发
private static Map<String, BigDecimal> objectToMap(Object obj) {Map<String, BigDecimal> map = new HashMap<>();if (obj == null) {return map;}Class clazz = obj.getClass();Field[] fields = clazz.getDeclaredFields();try {for (Field field : fields) {field.setAccessible(true);if (field.get(obj) != null) {map.put(field.getName(), (BigDecimal) field.get(obj));}}} catch (Exception e) {e.printStackTrace();}return map;}
这个方法是通过反射的技术将实体类转换成map的方式,因为我这边为了方便计算加了判空,是空的数据我这边不会放入map中,BIgDecimal类型对null非常不友好。当然如果为了保全数据的话,null也是可以放的,将判空去掉就行。
private static Map<String, BigDecimal> objectToMap(Object obj) {Map<String, BigDecimal> map = new HashMap<>();if (obj == null) {return map;}Class clazz = obj.getClass();Field[] fields = clazz.getDeclaredFields();try {for (Field field : fields) {field.setAccessible(true);map.put(field.getName(), (BigDecimal) field.get(obj));}} catch (Exception e) {e.printStackTrace();}return map;}
然后呢,为了方便运算的话,建议直接转list->
List<BigDecimal> list= new ArrayList<>(map.values());
开始计算的话直接怼stream即可
其中列举几个常规计算方式(去重计数,累加,取最大值。。。)
//统计去重计数
list.stream().filter(o -> o.getName() != null).map(object::getName).distinct().count();
//统计累加
list.stream().filter(o -> o.getElecutionTime() != null).map(object::getElecutionTime).reduce(BigDecimal.ZERO, BigDecimal::add);
//如果返回值是int直接sum即可
list.stream().filter(o -> o.getCount() != null).mapToInt(Student::getCount).sum();
//取最大值
list.stream().filter(o ->o.getMaxPeakLoad() != null).map(OrgOneEvaluation::getMaxPeakLoad).max(BigDecimal::compareTo).orElse(new BigDecimal("0"));
//简单过滤
orgOneEvaluations.stream().filter(item -> maxLoad.equals(item.getMaxPeakLoad())).findFirst().orElse(new OrgOneEvaluation()).getEndDate();
这样写的好处就是方便对集合数据进行处理当然一定会有更好的方法,这里就不提了
map集合-stream流-BigDecimal相关推荐
- 不可变集合 Stream流 异常
目录 创建不可变集合 如何创建不可变集合? Stream流 Stream流的概述 Stream流的获取 Stream流的常用API Stream流的综合应用 收集Stream流 异常处理 异常概述.体 ...
- 第八章_集合(3)_Map集合Stream流
目录 一.Map 1.Map集合的基本使用 2.Map集合的常用方法 3.Map集合遍历 二.HashMap 三.TreeMap 四.可变参数 五.Stream流 1.Stream流概念 2.获取St ...
- list转map stream_advancedday10可变参数不可变集合及Stream流
可变参数 可变参数指的是,方法参数的个数可以发生改变.但是其本质是一个数组,在方法把可变参数当做数组来使用就可以了. //可变参数的格式:数据类型...参数名public static void 方法 ...
- Java SE基础知识详解第[13]期—不可变集合、Stream流、异常
写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...
- 黑马笔记---创建不可变集合与Stream流
目录 1.不可变集合 1.1什么是不可变集合? 1.2如何创建不可变集合? 总结: 2.Stream流 2.1Stream流的概述 什么是Stream流? 案例:Stream流的作用 Stream流式 ...
- JavaSE基础笔记——不可变集合简介、Stream流体系、异常处理
1.不可变集合简介 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷贝到不 ...
- 【Java基础16】不可变集合、Stream流和异常
目录 1. 不可变集合 1.1 创建 2. Stream流 2.1 Stream流的创建 2.1.1 获得Stream流 2.1.2 中间操作 2.1.3 终结方法 2.1.4 Stream流数据收集 ...
- Stream流获取(集合,数组)
java中Stream获取泛型需要保持一致,包含collection系列流的获取,Map集合系列流的获取(键流的获取,值流的获取,键值对流的获取)和数组获取Stream流的两种方法 集合系列都是 集合 ...
- Map HasNap 集合Strem流
1.Map集合 1.1Map集合概述和特点[理解] interface Map<K,V> K:键的类型:V:值的类型 Map集合的特点 双 ...
最新文章
- mpvue微信小程序动画_入门微信小程序
- 机器学习笔记(三)——正则化最小二乘法
- [CTO札记]消除2种官僚文化现象
- 实习小白::(转) cocos2d-x使用cocosStudio编辑的动画文件
- 【OpenCV】复制、切割出图像ROI区域
- 公司这套架构统一处理try...catch这么香,求求你不要再满屏写了,再发现扣绩效!...
- xpdf 打开 chinapub中文pdf
- 搜狗收录提交方法搜狗收录方法
- IEEE协会首次在京举办研讨会,王飞跃称不存在AI芯片
- linux cp并打包目录,【linux】【qt5】【将linux下的qt程序打包发布(完全适用于中标麒麟)】...
- Bugku--散乱的密文
- VS2019修改项目名称
- 经验分享|如何做好FAQ设计
- Windows安全模式密码错误、密码不正确、和账户登陆密码不一致解决方案
- Linux daemontools的使用
- 计算机专业英语影印版答案,计算机专业英语(2008影印版)OPEN-ENDED答案
- Unity 数字孪生笔记2.1 PiXYZ Studio 工作流简介
- DDMS分析应用内存中的敏感信息
- Microsoft SQL Server 2005 中安装 Northwind 和 pubs 示例数据库
- java接口匿名实现类的匿名对象和java类匿名子类的匿名对象相关提点
热门文章
- 如何用手机把纸质便签的文字转变成电子文档
- web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)
- 学好奥数必掌握的这4大方法!
- 对比 Git 与 SVN,这篇讲的很易懂
- pygame游戏_小蝌蚪吃蚊子幼虫成长
- PostgreSQL 并发控制 -- 锁体系(spinlock,lwlock,regular lock)实现原理
- 助理工程师职称评定条件及流程是什么?怎么评定呢?甘建二告诉你
- 虹科分享 | 近距离接触最新的3个勒索软件
- 关于凯撒密码加密特征值,base64加密shellcode并分离绕过杀软
- 电子设计大赛-信号产生电路