java8中的Stream流式操作总结,List转Map或List转LinkedHashMap使用Collectors.groupingBy用法
前言背景描述:
开发使用本来是直接使用数据库的依据SQL进行group By获取到数据表的分组的一个字段的字符串,可是后来字符串越来越多越长,导致的最后的后面长度超多1024个汉字就会被截取,所以需要重新的重构方案进行字符串处理。
原始方案:
SELECT GROUP_CONCAT(t.factor_contant) as 'factor_contants' , t.factor_value as 'factor_value' from tbm_factor_config t where t.factor_type=5 GROUP BY t.factor_value;
得到的结果:
最后的factor_contants 字段超长了,导致后续的字符创获取不到,会导致配置失效!
修改方案为List获取数据表数据,order by 之后进行List使用流式Stream转成LinkedHashMap,然后返回配置就可以的。
JDK8使用Stream的把List使用流式Stream转成LinkedHashMap
Map<Integer, List<TbmFactorConfig>> tbmFactorConfigMap = tbmFactorConfigList.stream().collect(Collectors.groupingBy(TbmFactorConfig::getFactorValue, LinkedHashMap::new, Collectors.toList()));
代码效果:
@Overridepublic List<TbmFactorConfig> getFactorConfigByGourp(Integer fileType) {List<TbmFactorConfig> tbmFactorConfigList = tbmFactorConfigMapper.getFactorListByGroup(fileType);if (CollectionUtils.isEmpty(tbmFactorConfigList)) {return null;}Map<Integer, List<TbmFactorConfig>> tbmFactorConfigMap = tbmFactorConfigList.stream().collect(Collectors.groupingBy(TbmFactorConfig::getFactorValue, LinkedHashMap::new, Collectors.toList()));List<TbmFactorConfig> resultTbmFactorConfig = new ArrayList<TbmFactorConfig>();tbmFactorConfigMap.keySet().forEach(item -> {TbmFactorConfig tbmFactorConfig = new TbmFactorConfig();tbmFactorConfig.setFactorValue(item);String factorValues = tbmFactorConfigMap.get(item).stream().map(factorConfig -> factorConfig.getFactorContant()).collect(Collectors.joining(","));tbmFactorConfig.setFactorContant(factorValues);tbmFactorConfig.setFactorWeight(tbmFactorConfigList.get(0).getFactorWeight());resultTbmFactorConfig.add(tbmFactorConfig);log.error("目前获取到的map的key: {},获取到的value是:{} ", item, factorValues);});return resultTbmFactorConfig;}
打印出来的日志:
FactorConfigDaoImpl :目前获取到的map的key: 80,获取到的value是:FX168北美,TechWeb,北京日报,花网专稿,中国新闻网,中华工商时报
FactorConfigDaoImpl :目前获取到的map的key: 85,获取到的value是:中国基金报
FactorConfigDaoImpl :目前获取到的map的key: 87,获取到的value是:盖世汽车,盖世汽车快讯,中国汽车工业信息网
FactorConfigDaoImpl :目前获取到的map的key: 88,获取到的value是:机床商务网,中钢网,中国化工报,中国数字视听网,中国水网
FactorConfigDaoImpl :目前获取到的map的key: 90,获取到的value是:环球网,中国网科技,北京商报,中财网,中国机床工具工业协会
FactorConfigDaoImpl :目前获取到的map的key: 91,获取到的value是:中关村在线
FactorConfigDaoImpl :目前获取到的map的key: 92,获取到的value是:全国企业破产重整案件信息网
FactorConfigDaoImpl :目前获取到的map的key: 94,获取到的value是:格隆汇,深圳商报
完美的实现SQL的方案替换
java8中的Stream流式操作总结,List转Map或List转LinkedHashMap使用Collectors.groupingBy用法相关推荐
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- JDK8新特性(三):集合之 Stream 流式操作
1.Stream流由来 首先我们应该知道:Stream流的出现,主要是用在集合的操作上.在我们日常的工作中,经常需要对集合中的元素进行相关操作.诸如:增加.删除.获取元素.遍历. 最典型的就是集合遍历 ...
- Java8 的 Stream 流式操作之王者归来
相对于Java8之前的Java的相关操作简直是天差地别,Java8 的流式操作的出现,也很大程度上改变了开发者对于Java的繁琐的操作的印象,从此,Java也走向了函数式编程的道路! 1 流的创建 1 ...
- Java8 Stream流式操作接口详解
stream是用于集合使用的流式操作,可使用collection.stream获取流 default Stream<E> stream() {return StreamSupport.st ...
- jdk8新特性(二)Stream流式操作
1.流处理过程 2.Stream流式分类 Stream,IntStream,LongStream,DoubleStream 3.操作符 Stream 的一系列操作必须要使用终止操作,否者整个数据流是不 ...
- Java8中的Stream流
定义 什么是Stream流,Java doc中是这样写的 A sequence of elements supporting sequential and parallel aggregate ope ...
- 集合转换Stream流式操作
List集合中对象转map public class QuestionDto {/*** choice_question pid*/@PrimaryKeyprivate String id;/*** ...
- 函数式接口和Stream流式思想
函数式接口和Stream 1. 函数式接口 1.1 函数式接口概述 利用接口操作语法格式,对于方法的声明作出二次封装!!!方法声明:权限修饰符 是否静态 返回值类型 方法名(形式参数列表);对于接口而 ...
- Java8如何对Stream进行排序操作呢?
转自: Java8如何对Stream进行排序操作呢? 下文讲述Java8中对Stream进行排序操作的方法分享,如下所示: 实现思路:使用sorted()即可实现对Stream进行排序操作 如:sor ...
最新文章
- FragmentManager的简单使用
- 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
- DataSet和List 泛型之间互相转换 (转载, 作者写的很好)
- 网络爬虫--18.python中的GIL(全局解释器锁)、多线程、多进程、并发、并行
- html 文字中不换行怎么写,HTML让字体在一行内显示不换行
- 【500-Lines-or-Less】-【翻译练习】-【chapter-14】-【简单对象模型】-【第三部分】...
- Bailian2701 Bailian3864 POJ NOI0105-39 与7无关的数【进制】
- 【转】心等久了就会死心
- 由数据库连接池想到的----处理他人未释放的资源
- 解密Cocos2D中的Lua源码
- python控制电机转动_使用python,通过串口ROS直接控制电机驱动器(6)
- 元宇宙系统全面学习线路
- Windows11硬盘读写速度变慢的解决方法
- 校园招聘-2017美团后台开发内推笔试编程题
- bzGhost打造跨平台即时聊天软件之专栏介绍
- Unity做动画不播放解决方案之一
- Thermal 芯片工作温度知识总结
- 如何安装pypi下载的包
- /etc/sysconfig/iptables.save文件的用途
- 跟班学习JavaScript第一天——运算符、数据类型、ECMAScript
热门文章
- 电子电路:电流镜电路
- python中如何查一个函数的用法_Python常见内置函数用法(三)
- odoo12:上传图片,默认显示图标
- 微型计算机硬件系统基本组成一般应用包括,计算机系统的基本组成,一般应包括哪些...
- (五)Latex特殊符号
- Granger Causality 格兰杰因果关系
- Calendar.getInstance() gives error in Android Studio
- 分享Visual Studio 2019专业版、企业版密匙
- ORACLE对表批处理操作
- HDOJ:1863畅通工程