今天和一个前辈聊天,收获满满,跟我介绍了之前走过的路,让我也意识到不能在这样下去,一年又一年,年初到年尾,然后不知道自己学到了什么,收获了什么,完全没有足够深的记忆,刚好趁着这次机会写下自己个人博客的开篇!
昨天忙完工作后日常进入到技术交流群中爬楼(聊天记录),然后看到有人在问谁对java8熟悉的,当时我是不敢吱声的(自己小白,不能误人),然后看了问的问题和报错信息
代码如下:
List<windRainstatisticsDto> list =new.ArrayList<>();
List<windRainStatisticsDto> listl = new ArrayList<>();
//时间切片
for (int i=0;i<cntys.length;i++){
for(int j =0;j<params.length;1++){
list = windRainStatisticsDao.findByMaxNindRainStatisticsDao(cntys [i] ,beginTime ,endTime , params[j]);
listl.addAll (list);
}
}
Map<String,LIist<WindRainSEatisticsDto>>map = listl.stzeanm().oollect(
Collectors.groupingByf(WindainStatisticsDEo::getbCnty) ;
如下图1:
查找问题如果不能确定是哪里的话,只能用最笨和可靠的排除法了,当时仔细检查了代码看看是不是写分组有问题,然后没有问题,这问题排除,接着进入debug模式看看数据结构
相信懂这个还较熟练的人应该已经猜到问题了,但是我当时还不是那么清楚的是定位到这里 ,忽略了,因为发出来的截图dao层返回的是list<objcet> 成功骗过了我,如下图
那么问题到这也就清楚了。
持久层返回的数据是hashmap,分组是用的对象作为条件, 数据格式都不匹配 ,所以导致的报错,问题找到了那么接好办了,方法总比困难多,度娘yyds
我们只需要把上面List<dto> 就改成List<HashMap<String,Object>>去接收数据,下面分组条件换成mapData ->mapData.get("key") 就好了;
今日记录到此结束!
参考文档:https://blog.csdn.net/u014231523/article/details/10253590