List<Map>去重并合并数量
今天在查询出的sql中,出现了部门名称和部门ID有重合的数据!当然这样在页面上展示也会容易一起误导!查询出的数据结构如下图

希望根据deptid中 >最后一个节点id把deptname 合并成>最后一个节点名称并且origincode 数量合并,现在贴代码,做个记录:
List<Map> dataList = bigScreenService.queryEventOrginCodeNum();
List<Map<String, Object>> resultList = new ArrayList<>();
if (dataList != null && dataList.size() > 0) {
for (int k = 0; k < dataList.size(); k++) {
Map orginMap = dataList.get(k);
String deptName = "";//部门名称判断
if (orginMap.get("deptName") != null && !"".equals(orginMap.get("deptName"))) {
deptName = orginMap.get("deptName").toString().replaceAll(">", ">");
String[] deptArr = deptName.split(">");
deptName = deptArr[deptArr.length - 1];
} String deptId = (String) orginMap.get("deptId");//部门ID判断
if (deptId.indexOf(">") != -1) {
String[] deptIdArr = deptId.split(">");
deptId = deptIdArr[deptIdArr.length - 1];
}
orginMap.put("deptName", deptName);
orginMap.put("deptId", deptId); //0为新增数据,1为拼接,对部门ID链最后一个节点相同的部门做相加
String deptChainId = (String) dataList.get(k).get("deptId");
int flag = 0;
for (int j = 0; j < resultList.size(); j++) {
String newDeptChainId = String.valueOf(resultList.get(j).get("deptId"));
if (deptChainId.equals(newDeptChainId)) {
Number sameNum = (Number) dataList.get(k).get("originCode");
Number sameNum2 = (Number) resultList.get(j).get("originCode");
int originCodeNum = sameNum.intValue() + sameNum2.intValue();
resultList.get(j).put("originCode", originCodeNum);
flag = 1;
continue;
} }
if (flag == 0) {
resultList.add(dataList.get(k));
}
}
}
注:java.lang.Number是Integer,Long的父类.
期望结果如下图:

本人用的是jdk7版本的,貌似听说jdk8对于map的重复数据处理更强大,对于以上的代码,有更好的写法,请不吝赐教!谢谢喽
List<Map>去重并合并数量的更多相关文章
- hadoop中map和reduce的数量设置
hadoop中map和reduce的数量设置,有以下几种方式来设置 一.mapred-default.xml 这个文件包含主要的你的站点定制的Hadoop.尽管文件名以mapred开头,通过它可以控制 ...
- hadoop中map和reduce的数量设置问题
转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...
- sqlite 查询数据库中所有的表名,判断某表是否存在,将某列所有数值去重后获得数量
1.列出当前db文件中所有的表的表名 SQL语句:SELECT * FROM sqlite_master WHERE type='table'; 结构如下: 注:网上有人说可以带上db文件的名称,如: ...
- java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重
package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...
- 将两个ListMap中同下标的map去重合并
public static void main(String[] args) { Map<String,Object> oneMap = new HashMap<>(); on ...
- hadoop map(分片)数量确定
之前学习hadoop的时候,一直希望可以调试hadoop源码,可是一直没找到有效的方法,今天在调试矩阵乘法的时候发现了调试的方法,所以在这里记录下来. 1)事情的起因是想在一个Job里设置map的数量 ...
- Codeforces--633D--Fibonacci-ish (map+去重)(twice)
Fibonacci-ish Time Limit: 3000MS Memory Limit: 524288KB 64bit IO Format: %I64d & %I64u Su ...
- Map去重,去重value相同的元素,保留key最小的那个值
Map<Integer,String>,Integer代表时间撮,String代表文本信息去重函数:就是删除Map中value相同的元素,只保留key最小的那个元素 public stat ...
- 统计map上的read数量
samtools flagstat /SRA111111/SRR111222/accepted_hits.bam 78406056 + 0 in total (QC-passed reads + QC ...
随机推荐
- Vue2.0源码阅读笔记(四):nextTick
在阅读 nextTick 的源码之前,要先弄明白 JS 执行环境运行机制,介绍 JS 执行环境的事件循环机制的文章很多,大部分都阐述的比较笼统,甚至有些文章说的是错误的,以下为个人理解,如有错误, ...
- Python_pickle
pickle是一个可以将任意一个对象存储在硬盘文件中的工具. 更新:Python3中用法变了: https://www.cnblogs.com/fmgao-technology/p/9078918. ...
- __kindof的用法
简介: _kindof是苹果声明的一个新特性 使用方法如下: 正常我们声明一个属性: @property (nonatomic,strong) NSArray *viewArray; 看属性我们知道v ...
- UIGestureRecognizer 手势
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.v ...
- Runtime-iOS运行时应用篇
一.动态方法交换:Method Swizzling实现动态方法交换(Method Swizzling )是Runtime中最具盛名的应用场景,其原理是:通过Runtime获取到方法实现的地址,进而动态 ...
- ROLLBACK - 退出当前事务
SYNOPSIS ROLLBACK [ WORK | TRANSACTION ] DESCRIPTION 描述 ROLLBACK 回卷当前事务并取消当前事务中的所有更新. PARAMETERS 参数 ...
- [IOI1998]Polygon(区间dp)
[IOI1998]Polygon 题意翻译 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条 ...
- shlwapi.h文件夹文件是否存在
{ if( NULL == lpszFileName) { return FALSE; } if (PathFileExists(lpszFileName)) { return TRUE; } els ...
- Sass-@while
@while 指令也需要 SassScript 表达式(像其他指令一样),并且会生成不同的样式块,直到表达式值为 false 时停止循环.这个和 @for 指令很相似,只要 @while 后面的条件为 ...
- Jenkins ant打包部署
选择项目 自由风格