从两个接口获取到了数据Map集合, 但是要展示到同一页面 根据了播控人为key 将两个返回的进行遍历  将他们存在新的map里面  只有单个key value 就存为(MAP<object,object> ,多个直接存为Map<object,Map>
将两个接口获取到的key作为存入set去重
后去set 根据key(person)去取到各自对应的值,存入map 返回
方法很繁琐 ,循环太多,但遇到了 ,就这么实现的
数据example ::// {(all,xxx),(count,600)},{("张三",xxx),(count,190)}
// {(all,xxx),(count,190),(per,10%)},{("张三,xxx),(count,190),(per,10%)}
 @RequestMapping("/sx_review_all")
@ResponseBody
public List<Map<String, Object>> getReviewData(String startDate, String endDate) {
List<Map<String, Object>> list = new ArrayList<>();
//实时数据和离线数据的
List<Map<String, String>> rlData = this.auditorRt();
List<Map<String, Object>> olData = this.auditorOl(startDate, endDate); Map<String, Object> rlmap = new HashMap<>();
Map<String, Map<String,Object>> olmap = new HashMap<>();
Set<String> personSet = new HashSet<>();
;//存实时播控人 以姓名为key,count为值
for (Map<String, String> rl : rlData) {
String person = rl.get("auditor");
rlmap.put(person, rl.get("person_bc_amt"));
personSet.add(person);
} for (Map<String, Object> ol : olData) {
String person = ol.get("bc_person").toString();
Map<String,Object> cacheMap= new HashMap();
cacheMap.put("olAmt",ol.get("count").toString());
cacheMap.put("total",olData.get(0).get("count").toString());
cacheMap.put("is_bc_re", ol.get("is_bc_re").toString());
cacheMap.put("per", ol.get("per").toString());
olmap.put(person, cacheMap);
personSet.add(person);
} if (olData.size()>0){
for(String person:personSet) {
// String person = ol.get("bc_person").toString();
Map<String, Object> cache = new HashMap<>();
cache.put("auditor", person);
cache.put("rlAmt", rlmap.get(person) == null ? 0 : rlmap.get(person));//判断
cache.put("olAmt", olmap.get(person) != null ? olmap.get(person).get("olAmt") : 0);
cache.put("total", olData.get(0).get("count").toString());
cache.put("is_bc_re", olmap.get(person) != null ? olmap.get(person).get("is_bc_re") : 0);
cache.put("per", olmap.get(person) != null ? olmap.get(person).get("per") : 0);
list.add(cache); } // return list;
} else {
for (Map<String, String> rl : rlData) {
Map<String, Object> cache = new HashMap<>();
cache.put("auditor", rl.get("auditor"));
cache.put("rlAmt", rl.get("person_bc_amt"));//判断
cache.put("olAmt", 0);
cache.put("total", 0);
cache.put("is_bc_re", 0);
cache.put("per", 0);
list.add(cache); }
}
// }else {
// if (olData.size() != 0) {
// for (Map<String, String> rl : rlData) {
// String person = rl.get("auditor");
// Map<String, Object> cache = new HashMap<>();
// cache.put("auditor", rl.get("auditor"));
// cache.put("rlAmt", rl.get("person_bc_amt"));//判断
// cache.put("olAmt", olmap.get(person)!=null ?olmap.get(person).get("olAmt"):0);
// cache.put("total", olData.get(0).get("count").toString());
// cache.put("is_bc_re",olmap.get(person)!=null ?olmap.get(person).get("is_bc_re"):0 );
// cache.put("per", olmap.get(person)!=null ?olmap.get(person).get("per"):0);
// list.add(cache);
// }
// // return list;
// }
//
// }
return list;
}
 

需求中碰到的简单Map集合 key相同合并 value的思路的更多相关文章

  1. ES6中的Set和Map集合

    前面的话 在ES6标准制定以前,由于可选的集合类型有限,数组使用的又是数值型索引,因而经常被用于创建队列和栈.如果需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集 ...

  2. java.util.Map按照key值合并的value的Collection 集合中。

    用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /**  * @author Shalf  */ public class MapUtil { /** * 把partMa ...

  3. 定义一个Map集合,key和value不规定类型,任意放入数据,用keySet()和 entrySet()两种方式遍历出Map集合的数据

    package com.lanxi.demo1_1_1; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  4. map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法

    package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...

  5. 【读书笔记】【深入理解ES6】#7-Set集合和Map集合

    ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...

  6. 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!

    点赞再看,养成习惯,微信搜索『程序通事』,关注就完事了! 点击查看更多历史文章 上一篇 List 踩坑文章中,我们提到几个比较容易踩坑的点.作为 List 集合好兄弟 Map,我们也是天天都在使用,一 ...

  7. List和Map集合详细分析

    1.Java集合主要三种类型(两部分): 第一部分:Collection(存单个数据,只能存取引用类型) (1).List :是一个有序集合,可以放重复的数据:(存顺序和取顺序相同) (2).Set ...

  8. Java集合的实现细节—Set集合和Map集合

    Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...

  9. java学习笔记—集合之Map集合

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0p ...

随机推荐

  1. 火币网API文档——REST API 错误码

    错误码 行情 API 错误码 错误码 描述 bad-request 错误请求 invalid-parameter 参数错 invalid-command 指令错 code 的具体解释, 参考对应的er ...

  2. Python3学习之路~4.3 装饰器

    定义:本质是函数,装饰其他函数就是为其他函数添加附加功能. 原则: 不能修改被装饰函数的源代码 不能修改被装饰函数的调用方式 实现装饰器知识储备: 函数即“变量” 高阶函数 把一个函数名当做实参传递给 ...

  3. TlistView基本使用

    //增加 procedure TForm1.Button1Click(Sender: TObject); var lsItem: TListItem; begin lsItem := ListView ...

  4. 经典的js返回(退个页面)

    <a href="javascript:history.back()">返回</a> <a href="javascript:window. ...

  5. Build a Basic CRUD App with Vue.js and nodejs

    https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node#add-authentication-with-okta I’ ...

  6. QGL登陆wui 提示not possible

    1: sap 登陆 QGL系统,  提示 2: 需要到该系统下,使用 T-CODE  su01 或者  su3  对LIHANS1 用户角色进行修改. 3:su53  查询 自己操作的 历史纪录和 状 ...

  7. sap gui 配置

    1: sap gui 安全配置 ,在左下角搜索sap gui configuration.

  8. 【Java】-NO.20.Exam.1.Java.1.001- 【1z0-807】- OCEA

    1.0.0 Summary Tittle:[Java]-NO.20.Exam.1.Java.1.001-[1z0-807] Style:EBook Series:Java Since:2017-10- ...

  9. iOS 新浪微博-1.1框架升级

    在iOS 新浪微博-1.0框架搭建 中,使用的是xcode5.1.1开发.现在把重整了一下框架 改为xcode7.0开发 使用cocoaPad管理第三方库 程序将托管到github上 在改为xcode ...

  10. AsssetBunlder打包

    unity3d,资源过多的话.可以压缩成一个资源包.加载出来后.可以解压.找到自己需要的资源 就想.net网站.很多图标都是放一个大图片上.而不是一个图标就是一个图片 因为是在项目编辑时候给资源打包. ...