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

lamba stream处理集合

lamba stream处理集合

带拼接多字段分组List< Object> 转 Map<String,List< Object>>

Map<String, List<ProfitAndLossMapping>> collect = plMappingList.stream()
.collect(Collectors.groupingBy(m -> m.getLosType() + ":" + m.getRuleType()));

带拼接多字段分组List< Object> 转 Map<String,String>

List<LosNameListByFy> losNameListByFIES = losNameListByFyMapper.selectList(null);
Map<String, String> losMap = losNameListByFIES.stream()
.collect(Collectors.toMap(o -> o.getFy() + ":" + o.getLos(), LosNameListByFy::getNewLos));

List< Object> 转 Map<String,数量>

Map<String, Long> reportOrgIdMap = reportOrgConfs.stream()
.collect(Collectors.groupingBy(m -> m.getReport() + ":" + m.getOrgId(), Collectors.counting()));

List< Object> 转 Map<String,String>

 Map<String, BigDecimal> avgMap = summaryInitList.stream().collect(HashMap::new, (map, item) -> map.put(item.getCombinedValue(), item.getValue()), HashMap::putAll);Map<String,String> columnAndDimensionMap=dimensions.stream()
.filter(m->StringUtils.isNotBlank(m.getColumnName()))
.collect(Collectors.toMap(Dimension::getColumnName, Dimension::getName, (key1, key2) -> key1));

List< String> 转 Map<String,String>

Map<String,String> reportMap=report.stream()
.filter(StringUtils::isNotBlank)
.collect(Collectors.toMap(Function.identity(),Function.identity()));

List< Object> 转 Map<String, List< DictItemDetailVO>>

Map<String, List<DictItemDetailVO>> map = list.stream()
.collect(Collectors.groupingBy(DictItemDetailVO::getDescription));

List< String>去重 拼接

List<String> list = Arrays.asList("AA", "BB", "CC", "BB", "CC", "AA", "AA");
long l = list.stream().distinct().count();
System.out.println("No. of distinct elements:"+l);
String output = list.stream().distinct().collect(Collectors.joining(","));
System.out.println(output);
List<Map<String, String>> list = new ArrayList<>();
{Map<String, String> map = new HashMap<>();map.put("id", "1");map.put("name", "B");map.put("age", "C");list.add(map);
}{Map<String, String> map = new HashMap<>();map.put("id", "1");map.put("name", "E");map.put("age", "F");list.add(map);
}//1.返回结果{"1","B"},{"2","E"}
Map<String, String> a = list.stream().collect(Collectors.toMap(l -> l.get("id"), 
l -> l.get("name")));//2.两种方法返回结果{"1":{"name":"B","id":"1","age":"C"},"2":{"name":"E","id":"2","age":"F"}}
Map<String, Map> b = list.stream().collect(Collectors.toMap(l -> l.get("id"), map -> map));Map<String, Map> c = list.stream().collect(Collectors.toMap(l -> l.get("id"), 
Function.identity()));//3.重复key情况下处理方式返回结果{"1":{"name":"E","id":"1","age":"F"}}
Map<String, Map> d = list.stream().collect(Collectors.toMap(l -> l.get("id"), 
Function.identity(), (key1, key2) -> key2));//4.重复key情况下指定返回数据类型处理方式返回结果{"1":{"name":"E","id":"1","age":"F"}}
Map<String, Map> e = list.stream().collect(Collectors.toMap(l -> l.get("id"), 
Function.identity(), (key1, key2) -> key2, LinkedHashMap::new));//5.list根据key合并并转map;返回结果{"1":[{"name":"B","id":"1","age":"C"},{"name":"E","id":"1","age":"F"}]}
Map<String, List<Map>> lableGbType = list.stream()
.collect(Collectors.groupingBy(l -> (String) l.get("id")));//6.根据key提取list中指定的值转List数组;返回结果["1","1"]
List<String> ids = list.stream().map(m -> (String) m.get("id"))
.collect(Collectors.toList());//7.数组去重并转list
String[] str = "1,1,2,3,4,5,".split(",");
List<String> listNames = Arrays.stream(str).filter(name -> !isEmpty(name)).distinct().collect(Collectors.toList());}
查数据
List<Map<String, Object>> prnInfo = xxxMapper.selectInfo(pars);List<String> ids= prnInfo.stream().map(m -> m.get("id").toString()).collect(Collectors.toList());**1.根据map的某个key分组**
Map<String, List<Map<String, Object>>> res= dataList.stream().collect(groupingBy(map -> map.get("d").toString()));
获取type="ZC"的数据        
----------------------------------------------------------------     
List<Map<String, Object>> data = res.stream().filter(map -> (map.get("type")+"").equals("ZC")).collect(Collectors.toList());
-----------------------------------------------------------------
List<Map<String, Object>> res = prnInfo .stream().filter(e ->Integer.parseInt(e.get("caseFlag").toString()) != 0)
.collect(Collectors.toList());**2.根据某个key求对应value和**
int totalNums= prnInfo .stream().collect(Collectors.summingInt( e -> Integer.parseInt(e.get("num").toString()))); 

**3.根据map中的某个key的value值进行判断过滤**List<Map<String,Object>> res= prnInfo .stream().filter(e -> Double.parseDouble(e.get("z").toString())>Double.parseDouble(e.get("wrz").toString())).collect(Collectors.toList());
------------------------------------------------------------------------
获取指XX时间前后的数据
LocalDateTime ftm = "xxxxxxxxx";
List<Map<String, Object>> res = prnInfo .stream().filter(map -> LocalDateTime.parse(map.get("starttm")+"", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")).isBefore(tm )).collect(Collectors.toList());------------------------------------------------------------------------
**4.对集合中的map做变更**
List<Map<String, Object>> res= prnInfo .stream().map(x -> {x.put("encd", Double.parseDouble(x.get("rz")+"")-Double.parseDouble(x.get("tdz")+""));return x;}).collect(Collectors.toList());**5.排序**
List<Map<String, Object>>  res= prnInfo.stream().sorted((e1,e2) -> {
return -Double.compare(Double.valueOf(e1.get("num").toString()),Double.valueOf(e2.get("num").toString()));
}).collect(Collectors.toList());res.sort(Comparator.comparing((Map<String, Object> h) -> (h.get("tm").toString())));//排序可能对应字段数据为null导致空指针,需要先判断过滤一下
res.stream().filter(Objects::nonNull).filter((Map<String, Object> h)-> (Objects.nonNull(h.get("fz")))).collect(Collectors.toList());

6.去重
List<String> res = prnInfo.stream().distinct().collect(Collectors.toList());7.做统计
IntSummaryStatistics collect = list.stream().collect(Collectors.summarizingInt(Test::getId));
System.out.println("和:" + collect.getSum());
System.out.println("数量:" + collect.getCount());
System.out.println("最大值:" + collect.getMax());
System.out.println("最小值:" + collect.getMin());
System.out.println("平均值:" + collect.getAverage());最大
double max = prnInfo.stream().mapToDouble(l -> ((BigDecimal) l.get("num")).doubleValue()).max().getAsDouble();double sum = prnInfo.stream().mapToDouble(l -> ((BigDecimal) l.get("num")).doubleValue()).sum();
8.list-map转换
Map<String, Object> map = list.stream().collect(Collectors.toMap(i -> i.getName() + i.getUnitName(), j -> j, (k1, k2) -> k1));------------------------------------------------------------------------
List<User> collect = map.entrySet().stream().map(item -> {User user= new User();user.setId(item.getKey());user.setName(item.getValue());return user;}).collect(Collectors.toList());遍历。。
users.stream().forEach(x->{System.out.println(x);
});下面这个场景用的也很多,List里面的a和b相等就把c属性相加,报表里面某些属性相等则求和等场景,可以先根据需要去重的多个字段进行分组,再计算返回
for (Map.Entry<String, List<DTO>> entry : beanList.parallelStream().collect(groupingBy(o -> (o.getId() + o.geCode()), Collectors.toList())).entrySet()) {if(bitMap.contains(entry.getKey()) && entry.getValue().size()==1){objects.add(entry.getValue().get(0));}else{List<DTO> transfer = entry.getValue();transfer.stream().reduce((a, b) -> DTO.builder().irrCd(a.getIrrCd()).id(a.getId()).tm(a.getCode()).build()).ifPresent(objects::add);}}

相关文章:

  • 【Midjourney入门教程4】与AI对话,写好prompt的必会方法
  • Spring Boot创建多模块项目
  • kafka-consumer-groups.sh
  • 【黑马程序员】SSM框架——SpringBoot
  • 【电路笔记】-谐波
  • 人工智能领域CCF推荐国际学术刊物最新目录(全)
  • 自动驾驶学习笔记(六)——Apollo安装
  • 力扣160. 相交链表
  • 【JavaScript】window 对象、location 对象、navigator 对象和 history 对象
  • 解密 docker 容器内 DNS 解析原理
  • 从信号中去除 60 Hz 杂声
  • 如何设置OBS虚拟摄像头给钉钉视频会议使用
  • 学习Opencv(蝴蝶书/C++)相关——1. 前言 和 第1章.概述
  • 企业财务数字化转型的机遇有哪些?_光点科技
  • 【Mac环境搭建】JDK安装、多JDK安装与切换
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CSS相对定位
  • golang中接口赋值与方法集
  • HTTP那些事
  • Java多线程(4):使用线程池执行定时任务
  • Logstash 参考指南(目录)
  • PHP 的 SAPI 是个什么东西
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 百度地图API标注+时间轴组件
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 那些被忽略的 JavaScript 数组方法细节
  • 使用docker-compose进行多节点部署
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 在weex里面使用chart图表
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Java性能优化之JVM GC(垃圾回收机制)
  • kubernetes资源对象--ingress
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​决定德拉瓦州地区版图的关键历史事件
  • #控制台大学课堂点名问题_课堂随机点名
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2015)JS ES6 必知的十个 特性
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (办公)springboot配置aop处理请求.
  • (附源码)计算机毕业设计高校学生选课系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十一)手动添加用户和文件的特殊权限
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET程序员迈向卓越的必由之路