前言背景描述:

开发使用本来是直接使用数据库的依据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用法相关推荐

  1. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  2. JDK8新特性(三):集合之 Stream 流式操作

    1.Stream流由来 首先我们应该知道:Stream流的出现,主要是用在集合的操作上.在我们日常的工作中,经常需要对集合中的元素进行相关操作.诸如:增加.删除.获取元素.遍历. 最典型的就是集合遍历 ...

  3. Java8 的 Stream 流式操作之王者归来

    相对于Java8之前的Java的相关操作简直是天差地别,Java8 的流式操作的出现,也很大程度上改变了开发者对于Java的繁琐的操作的印象,从此,Java也走向了函数式编程的道路! 1 流的创建 1 ...

  4. Java8 Stream流式操作接口详解

    stream是用于集合使用的流式操作,可使用collection.stream获取流 default Stream<E> stream() {return StreamSupport.st ...

  5. jdk8新特性(二)Stream流式操作

    1.流处理过程 2.Stream流式分类 Stream,IntStream,LongStream,DoubleStream 3.操作符 Stream 的一系列操作必须要使用终止操作,否者整个数据流是不 ...

  6. Java8中的Stream流

    定义 什么是Stream流,Java doc中是这样写的 A sequence of elements supporting sequential and parallel aggregate ope ...

  7. 集合转换Stream流式操作

    List集合中对象转map public class QuestionDto {/*** choice_question pid*/@PrimaryKeyprivate String id;/*** ...

  8. 函数式接口和Stream流式思想

    函数式接口和Stream 1. 函数式接口 1.1 函数式接口概述 利用接口操作语法格式,对于方法的声明作出二次封装!!!方法声明:权限修饰符 是否静态 返回值类型 方法名(形式参数列表);对于接口而 ...

  9. Java8如何对Stream进行排序操作呢?

    转自: Java8如何对Stream进行排序操作呢? 下文讲述Java8中对Stream进行排序操作的方法分享,如下所示: 实现思路:使用sorted()即可实现对Stream进行排序操作 如:sor ...

最新文章

  1. FragmentManager的简单使用
  2. 3d卷积神经网络_HSNets:使用卷积神经网络从2D轮廓预测3D人体模型
  3. DataSet和List 泛型之间互相转换 (转载, 作者写的很好)
  4. 网络爬虫--18.python中的GIL(全局解释器锁)、多线程、多进程、并发、并行
  5. html 文字中不换行怎么写,HTML让字体在一行内显示不换行
  6. 【500-Lines-or-Less】-【翻译练习】-【chapter-14】-【简单对象模型】-【第三部分】...
  7. Bailian2701 Bailian3864 POJ NOI0105-39 与7无关的数【进制】
  8. 【转】心等久了就会死心
  9. 由数据库连接池想到的----处理他人未释放的资源
  10. 解密Cocos2D中的Lua源码
  11. python控制电机转动_使用python,通过串口ROS直接控制电机驱动器(6)
  12. 元宇宙系统全面学习线路
  13. Windows11硬盘读写速度变慢的解决方法
  14. 校园招聘-2017美团后台开发内推笔试编程题
  15. bzGhost打造跨平台即时聊天软件之专栏介绍
  16. Unity做动画不播放解决方案之一
  17. Thermal 芯片工作温度知识总结
  18. 如何安装pypi下载的包
  19. /etc/sysconfig/iptables.save文件的用途
  20. 跟班学习JavaScript第一天——运算符、数据类型、ECMAScript

热门文章

  1. 电子电路:电流镜电路
  2. python中如何查一个函数的用法_Python常见内置函数用法(三)
  3. odoo12:上传图片,默认显示图标
  4. 微型计算机硬件系统基本组成一般应用包括,计算机系统的基本组成,一般应包括哪些...
  5. (五)Latex特殊符号
  6. Granger Causality 格兰杰因果关系
  7. Calendar.getInstance() gives error in Android Studio
  8. 分享Visual Studio 2019专业版、企业版密匙
  9. ORACLE对表批处理操作
  10. HDOJ:1863畅通工程