失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java8中的Stream流式操作总结 List转Map或List转LinkedHashMap使用Collectors.groupingBy用法

java8中的Stream流式操作总结 List转Map或List转LinkedHashMap使用Collectors.groupingBy用法

时间:2020-05-19 19:28:27

相关推荐

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用法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。