需求中碰到的简单Map集合 key相同合并 value的思路
从两个接口获取到了数据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的思路的更多相关文章
- ES6中的Set和Map集合
前面的话 在ES6标准制定以前,由于可选的集合类型有限,数组使用的又是数值型索引,因而经常被用于创建队列和栈.如果需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集 ...
- java.util.Map按照key值合并的value的Collection 集合中。
用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /** * @author Shalf */ public class MapUtil { /** * 把partMa ...
- 定义一个Map集合,key和value不规定类型,任意放入数据,用keySet()和 entrySet()两种方式遍历出Map集合的数据
package com.lanxi.demo1_1_1; import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
- 【读书笔记】【深入理解ES6】#7-Set集合和Map集合
ES6新标准中将Set集合和Map集合添加到JS中. ES5中Set集合和Map集合 在ES5中,开发者们用对象属性来模拟这两种集合. var set = Object.create(null); s ...
- 编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!
点赞再看,养成习惯,微信搜索『程序通事』,关注就完事了! 点击查看更多历史文章 上一篇 List 踩坑文章中,我们提到几个比较容易踩坑的点.作为 List 集合好兄弟 Map,我们也是天天都在使用,一 ...
- List和Map集合详细分析
1.Java集合主要三种类型(两部分): 第一部分:Collection(存单个数据,只能存取引用类型) (1).List :是一个有序集合,可以放重复的数据:(存顺序和取顺序相同) (2).Set ...
- Java集合的实现细节—Set集合和Map集合
Set:代表无序.不可重复的集合 Map:代表key-value对集合,也称为关联数组 从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展. 1.Set集合和Map集合的 ...
- 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 ...
随机推荐
- Python3学习之路~5.8 shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 import shelve import datetime name = [& ...
- python----GIL的概念
问题:多核没有利用上 GIL:全局解释锁 因为有GIL ,所以同一时刻,只有一个线程被CPU执行 任务:IO密集型,计算密集型 对于IO密集型的任务:python的多线程的是有意义的 可以采用多进程+ ...
- Python开发【项目】:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- ansible-playbook 快速入门
管理用户密码: --- - hosts: test tasks: - name: changed password shell: echo root:123456 | chpasswd remote_ ...
- zyb的面试(广工14届比赛)
这道题目在上半年ZOJ模拟上年青岛赛区ACM题的时候就已经出现了.当时我不会写,本来想着赛后补题的最后因为懒惰又没补. 现在这道题又出现了.这是上天对我的惩罚啊!!! 所以这次铁了心也要补这题.然后我 ...
- CentOS6.5安装Maven3.2.5
1.首先从官网下载最新的安装包http://maven.apache.org/download.cgi apache-maven-3.2.5-bin.tar.gz 2.上传安装包到 /usr/loc ...
- cocos2d JS-(JavaScript) cc.each循环遍历对象
有了它,妈妈再也不用担心我的数组会越界啦!! each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSO ...
- sql注入学习笔记,什么是sql注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)
(整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...
- 实时计算DStream下求平均值(reduceByKey or combineByKey)
对NC市的卡口数据进行分析,大概所有卡口每15秒接入的有效数据在3000条左右,现在产品经理要求对这些数据进行拥堵分析,通过两个卡口之间的车辆行驶时长来判断道路的拥堵情况.具体算法不展开.其中我需要做 ...
- SQL Server 创建索引(index)
索引的简介: 索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书. 索引主要目的是提高了SQL Server系统的性能,加快数 ...