stream实现list根据对象中多个属性分组,并取分组后最新数据
业务场景:定时任务同步中间表数据到业务表,如果中间表中存在相同维度的多条数据(未创建唯一索引),取最新一条数据,并对查询的中间表数据进行更新。
方式1
// 根据结果表唯一索引分组,取中间表重复最新一条Map<String, List<MidDeliveryAreaConfigFresh>> mapGroup = list.stream().collect(Collectors.groupingBy(v ->v.getDcCode() + v.getBigCategoryCode() + v.getSmallCategoryCode() + v.getProductCode() + v.getStockLoc()));List<MidDeliveryAreaConfigFresh> resultList = mapGroup.values().stream().map(listv -> listv.get(listv.size() - 1)).collect(Collectors.toList());
方式2
List<MidDeliveryAreaConfigFresh> resultList = list.stream().collect(Collectors.groupingBy(v -> new StringBuilder().append(v.getDcCode()).append(v.getBigCategoryCode()).append(v.getSmallCategoryCode()).append(v.getProductCode()).append(v.getStockLoc()))).values().stream().map(listv -> listv.get(listv.size() - 1));
方式2SonarLint检测工具不通过,方式1对方式2进行了拆分优化。
方式3,更详细拆分
Map<String, List<MidDeliveryAreaFresh>> map = list.stream().collect(Collectors.groupingBy(MidDeliveryAreaFresh::getDeliveryAreaCode));List<List<MidDeliveryAreaFresh>> groupList = map.values().stream().collect(Collectors.toList());List<MidDeliveryAreaFresh> resultList = groupList.stream().map(listv -> listv.get(listv.size() - 1)).collect(Collectors.toList());
stream实现list根据对象中多个属性分组,并取分组后最新数据相关推荐
- java 数组匹配_Java8List对象中的List匹配元素 返回当前匹配后的数据(含外数组)
需求:获取lols中的player某个元素 import com.alibaba.fastjson.JSONObject; import lombok.*; import org.springfram ...
- Stream通过List里对象中某个属性最小来取该最小对象
Stream通过List里对象中某个属性最小来取该最小对象 代码实现(Entity为实体) 代码实现(Entity为实体) List.stream().min(Comparator.comparing ...
- java集合按大小排序_List集合对象中按照不同属性大小排序的实例
实例如下: package com.huad.luck; import java.util.arraylist; import java.util.collections; import java.u ...
- js 对象中添加新属性
js 对象中添加新属性 对象数组添加新属性 同名属性会被覆盖,相同属性会去重
- js删除数组对象中的某个属性的方法
模拟数组对象数据 let newArr = [{title:'小明', id:18},{title:'小红', id:16}] 方式一:(for循环)删除数组对象中的某个属性,如删除id属性 for ...
- 【关于js数组对象一道题】将数组对象中的英文属性名替换为中文属性名
将数组对象中的英文属性名替换为中文属性名 const arr = [{name: '张三', age: 18, address: '湖北'}, {name: '李四', age: 18, addres ...
- DOM对象中的常用属性(innerHTML属性,innerText属性,className属性,style属性)
DOM对象中的常用属性 innerHTML属性 innerText属性 className属性 style属性 innerHTML属性 innerHTML属性:用于设置或获取HTML 元素中的内容. ...
- mysql查询每个id的前10条数据_解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据...
我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据. 好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的 ...
- TS对象中的实例属性和静态属性
// 使用class关键字来定义一个类 /* * 对象中主要包含了两个部分: * 属性 * 方法 * */ class Person{/** 直接定义的属性是实例属性,需要通过对象的实例去访问:* c ...
最新文章
- Ubuntu16.04运行.run文件
- Dubbo开源现状与未来规划
- CUDA高性能计算经典问题:前缀和
- MySQL复制的奇怪问题
- 在 IntelliJ IDEA 中定制开发 ZooKeeper
- Extjs, each中实现break、continue
- RHCE 学习笔记(32) - DNS
- boot spring 启动 文本_SpringBoot启动时如何加载配置文件
- 【自然语言处理系列】预训练模型原理和实践综述 | 附汇报PPT原稿和18篇论文
- [MySQL]SQL优化工具SQLAdvisor
- 单位换算:s(秒),ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)
- Android MPush开源消息推送系统:简洁、安全、支持集群
- 百度地图API详解之公交路线规划
- matplotlib.pyplot.hist()绘制直方图
- UI设计师都用什么工具?
- [每天一个知识点]12-Maven怎么读
- 帮我起个名字,带淇,两个字的
- 赞!华为19级大牛分享503NoSQL进阶笔记,横扫一切
- AutoCAD 描图方法小结
- 计算机应用基础心得体会300字,网络远程学习的心得体会
热门文章
- python支付宝自动支付_python-支付宝支付示例
- opboot怎么刷入固件_没有固件可刷的路由器,那就开个 SSH 折腾一下
- Algorithm:字典序最小问题
- Scrapy分布式原理及Scrapy-Redis源码解析(待完善)
- python 切片_知乎问答之 Python 切片整理
- MATLAB rolcus函数,自动控制原理实验报告 .doc
- python如何判断QQ是否在线?
- Hbase具体操作(图文并茂且超超全~~~)
- Android 模拟器连接异常:Unable to connect to ADB server
- Spring cloud Gateway(二) 一个Http请求的流程解析