今天在查询出的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("&gt;", ">");
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>去重并合并数量的更多相关文章

  1. hadoop中map和reduce的数量设置

    hadoop中map和reduce的数量设置,有以下几种方式来设置 一.mapred-default.xml 这个文件包含主要的你的站点定制的Hadoop.尽管文件名以mapred开头,通过它可以控制 ...

  2. hadoop中map和reduce的数量设置问题

    转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务 ...

  3. sqlite 查询数据库中所有的表名,判断某表是否存在,将某列所有数值去重后获得数量

    1.列出当前db文件中所有的表的表名 SQL语句:SELECT * FROM sqlite_master WHERE type='table'; 结构如下: 注:网上有人说可以带上db文件的名称,如: ...

  4. java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重

    package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...

  5. 将两个ListMap中同下标的map去重合并

    public static void main(String[] args) { Map<String,Object> oneMap = new HashMap<>(); on ...

  6. hadoop map(分片)数量确定

    之前学习hadoop的时候,一直希望可以调试hadoop源码,可是一直没找到有效的方法,今天在调试矩阵乘法的时候发现了调试的方法,所以在这里记录下来. 1)事情的起因是想在一个Job里设置map的数量 ...

  7. Codeforces--633D--Fibonacci-ish (map+去重)(twice)

     Fibonacci-ish Time Limit: 3000MS   Memory Limit: 524288KB   64bit IO Format: %I64d & %I64u Su ...

  8. Map去重,去重value相同的元素,保留key最小的那个值

    Map<Integer,String>,Integer代表时间撮,String代表文本信息去重函数:就是删除Map中value相同的元素,只保留key最小的那个元素 public stat ...

  9. 统计map上的read数量

    samtools flagstat /SRA111111/SRR111222/accepted_hits.bam 78406056 + 0 in total (QC-passed reads + QC ...

随机推荐

  1. C# 一个网站

    http://www.aizhengli.com/aspnet-mvc5/6/aspnet-mvc5-member-user-register.html

  2. postman 上一个接口的返回值作为下一个接口的入参

    在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是: 1.获取上一个接口的返回值 2.将返回值设置成环境变量或者全局变量 3.设置下 ...

  3. MySQL--19 MHA切换日志分析

    MHA切换检测日志分析 GTID模式 [root@db03 ~]# tail -f /etc/mha/manager.log #在MySQL select ping:2006上出错(MySQL服务器已 ...

  4. java String练习题

    package java07; /* 题目: 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串,格式参照如下:[word1#word2#word3] 思路: 1.首先准备一个int[]数 ...

  5. Python repr, str, eval 使用小记 及 str 和 repr的区别

    >>> s = '1+2'>>> x = eval(s) #把引号剥离一次,就变成了运算1+2>>> x3>>> ss = st ...

  6. macOS系统安装gnuplot(解决Terminal type set to unknown)

    macOS 下使用 Homebrew 安装 gnuplot brew install gnuplot 在 terminal 中输入gnuplot进入模式之后,提示_Terminal type set ...

  7. Linux下安装gnuplot

    sudo apt-get install gnuplot 但是在 terminal 里面输入: gnuplot 提示 Terminal type set to unknown.解决方法是安装 x11: ...

  8. Centos6安装zabbix-agent

    一.安装yum源 rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.r ...

  9. 回炉Spring--Bean生命周期及AOP

    Spring容器: 在基于Spring的应用中,你的应用对象生存于Spring容器(container)中,Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡.(在 ...

  10. 咱们从头到尾讲一次 Flink 网络流控和反压剖析

    本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Contributor.OPPO 大数据平台研发负责人张俊老师分享.主要内容如下: 网络流控的概念与背景 TCP的流 ...