当前位置: 首页 > news >正文

Java8新特性整理记录

1、list实体集合根据某个属性分组后求和

方法一: 

list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData = d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPremium())).reduce(BigDecimal.ZERO, BigDecimal::add).longValue());return sampleData;}).collect(Collectors.toList());

方法二: 

List orderTwo = list.stream().collect(Collectors.toMap(DemoEntity::getId,e->e,(o1,o2)->{o1.setPremium(o1.getPremium()+o2.getPremium());return o1;})).values().stream().collect(Collectors.toList());System.out.println(JSON.toJSON(orderTwo));

 例子:

@Data
public class DemoEntity {private int id;private Long premium;
}运行main方法
public static void main(String[] args) {List<DemoEntity> list = new ArrayList<>();DemoEntity demo = new DemoEntity();demo.setId(1);demo.setPremium(23L);DemoEntity demo1 = new DemoEntity();demo1.setId(2);demo1.setPremium(13L);list.add(demo);list.add(demo1);List<DemoEntity> list1 = new ArrayList<>();DemoEntity demo4 = new DemoEntity();demo4.setId(1);demo4.setPremium(12L);DemoEntity demo5 = new DemoEntity();demo5.setId(2);demo5.setPremium(45L);list1.add(demo4);list1.add(demo5);list.addAll(list1);System.out.println(JSON.toJSON(list));List orders = list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData = d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPremium())).reduce(BigDecimal.ZERO, BigDecimal::add).longValue());return sampleData;}).collect(Collectors.toList());System.out.println(JSON.toJSON(orders));List orderTwo = list.stream().collect(Collectors.toMap(DemoEntity::getId,e->e,(o1,o2)->{o1.setPremium(o1.getPremium()+o2.getPremium());return o1;})).values().stream().collect(Collectors.toList());System.out.println(JSON.toJSON(orderTwo));}

http://www.lryc.cn/news/142937.html

相关文章:

  • 43.227.196.1 RAID技术有什么意义?
  • c++ qt--信号与槽(一) (第三部分)
  • LLM学习《Prompt Engineering for Developer》
  • nginx-获取客户端IP地址
  • Redis 高可用之集群搭建和数据分片
  • 兄弟,王者荣耀的段位排行榜是通过Redis实现的?
  • Linux系统编程--文件编程--打开创建文件
  • http协议与apache
  • 搜索二叉树的算法解析与实例演示
  • 研磨设计模式day13组合模式
  • Linux命令(73)之zip
  • 深入理解Reactor模型的原理与应用
  • 微信小程序开发的投票评选系统设计与实现
  • 【校招VIP】算法考点之堆排
  • 关于yarn安装时报“node“ is incompatible with this module的解决办法
  • 开源利器推荐:美团动态线程池框架的接入分享及效果展示
  • Linux目录结构与文件管理 (02)(四)
  • 对1GHz脉冲多普勒雷达进行快速和慢速处理生成5个移动目标的距离多普勒图研究(Matlab代码实现)
  • uni.uploadFile上传 PHP接收不到
  • 2023年高教社杯 国赛数学建模思路 - 复盘:光照强度计算的优化模型
  • Netty简易聊天室
  • Flutter Cannot run with sound null safety, because the following dependencies
  • 利用改进的遗传算法(种群隔离与个体迁移)mpi并行解决tsp问题
  • 【C++】—— C++11之线程库
  • 前端面试:【性能优化】前端缓存、CDN、懒加载和预加载
  • 民族传统文化分享系统uniapp 微信小程序
  • netty(二):NIO——处理可写事件
  • PHP基本语法解析与应用指南
  • ICS PA1
  • Java学数据结构(4)——散列表Hash table 散列函数 哈希冲突