// 获取“选定时间”内的片区名和垃圾总量
List<GarbageDecrementDataVO> selectedList = weightRecordsDao.getByTimeAndAreaName(stationName, beginTime, endTime);
//获取“之前时间段”的片区名和垃圾总量
List<GarbageDecrementDataVO> beforeList = weightRecordsDao.getByTimeAndAreaName(stationName,beforeBeginTimeStr,beforeEndTimeStr);
//存放返回的数据
Map<String, String> map = new HashMap<>(16);
if(Collections3.isEmpty(selectedList)){
//两个集合都为空,则返回size为0的map
if(Collections3.isEmpty(beforeList)) {
return map;
}else {
//当“之前时间段”的集合不为空时,遍历并将值放进要返回的map中(value变成负值)
map = beforeList.stream().collect(Collectors.toMap(b -> b.getRushAreaName(),b -> "-" + b.getTotal().toString()));
}
}else {
//当“之前时间段”的集合为空时,遍历“选定时间”的集合并将值放进要返回的map中
if(Collections3.isEmpty(beforeList)) {
map = selectedList.stream().collect(Collectors.toMap(s -> s.getRushAreaName(),s -> s.getTotal().toString()));
}else {
//两者都不为空时
//获取两个集合的迭代器
Iterator<GarbageDecrementDataVO> it1 = selectedList.iterator();
while(it1.hasNext()) {
GarbageDecrementDataVO vo1 = it1.next();
Iterator<GarbageDecrementDataVO> it2 = beforeList.iterator();
while (it2.hasNext()){
GarbageDecrementDataVO vo2 = it2.next();
//当两个集合中的片区相等时,将“选定时间”的片区总量减去“之前时间段”的片区总量
if(vo1.getRushAreaName().equals(vo2.getRushAreaName())){
Double total = vo1.getTotal() - vo2.getTotal();
map.put(vo1.getRushAreaName(),total.toString());
//移除map中以存在的数据
it1.remove();
it2.remove();
break;
}
}
}
//如果存在不相等的元素,再将其放进map中
if(!Collections3.isEmpty(selectedList)){
for (GarbageDecrementDataVO vo : selectedList){
map.put(vo.getRushAreaName(),vo.getTotal().toString());
}
}
if(!Collections3.isEmpty(beforeList)){
for (GarbageDecrementDataVO vo : beforeList){
map.put(vo.getRushAreaName(),"-"+vo.getTotal().toString());
}
}
}
}
如何将两个list存进map中
猜你喜欢
转载自blog.csdn.net/weixin_43554942/article/details/88868085
今日推荐
周排行