//不建议使用Map保存这些,使用实体bean更好

package com.rxlamo.zhidao;

 
import java.util.*;
 
public class Main {
 
 
    public static void main(String[] args) {
 
        List<Map<String, Object>> list = new ArrayList<>(4);
 
        /*
         * map1:{ID:4,身高:170,体重:60}
         map2:{ID:4,年龄:20,性别:男}
         map3:{ID:5,身高:160,体重:50}
         map4:{ID:5,年龄:19,性别:女}
         */
 
        Map<String, Object> map1 = new HashMap<>();
        map1.put("ID"4);
        map1.put("身高"170);
        map1.put("体重"60);
 
        list.add(map1);
 
        Map<String, Object> map2 = new HashMap<>();
        map2.put("ID"4);
        map2.put("年龄"20);
        map2.put("性别"'男');
 
        list.add(map2);
 
 
        Map<String, Object> map3 = new HashMap<>();
        map3.put("ID"5);
        map3.put("身高"160);
        map3.put("体重"50);
 
        list.add(map3);
 
        Map<String, Object> map4 = new HashMap<>();
        map4.put("ID"5);
        map4.put("年龄"19);
        map4.put("性别"'女');
 
        list.add(map4);
 
        merge(list);
 
 
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> map = list.get(i);
            System.out.println(map);
        }
 
 
    }
 
 
    private static void merge(List<Map<String, Object>> list) {
 
        for (int i = 0; i < list.size(); i++) {
 
            Map<String, Object> map = list.get(i);
 
 
            // 从当前项的下一项开始检查
            for (int j = i + 1; j < list.size(); j++) {
 
                Map<String, Object> childMap = list.get(j);
 
                // ID 相等
                if (map.get("ID").equals(childMap.get("ID"))) {
                    // 合并,此处需要先 remove
                    list.remove(childMap);
                    map.putAll(childMap);
                }
 
 
            }
 
 
        }
 
    }
 
 
}

一个list<Map>里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中的更多相关文章

  1. mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可

    是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...

  2. 递归将Map里的字段名由驼峰转为下划线

    导航 定位 概述 算法设计 递归技巧 代码实现 定位 本文适合于想要使用Java递归地将Map里的Key字段名从驼峰转为下划线,或者想了解如何处理任意递归的Map结构的筒鞋. 概述 在进行多语言混合编 ...

  3. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. C++中基于Crt的内存泄漏检测(重载new和delete,记录在Map里)

    尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FIL ...

  5. Java实现递归将嵌套Map里的字段名由驼峰转为下划线

    摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...

  6. matlab批量读取一个文件夹里类似命名的mat文件

    参考网址: Matlab读取同一路径下多个txt或mat文件总结 matlab 批量读取数据文件.mat .dat 整理:matlab批量读入数据文件的方法 首先命名方式体现在只是名字里数字有变化,其 ...

  7. 常用代码之五:RequireJS, 一个Define需要且只能有一个返回值/对象,一个JS文件里只能放一个Define.

    RequireJS 介绍说一个JS文件里只能放一个Define,这个众所周知,不提. 关于Define,它需要有一个返回值/对象,且只能有一个返回值/对象,这一点却是好多帖子没有提到的,但又非常重要的 ...

  8. 查找一个Class到底在那一个jar文件里

    整理自己的一些笔记,发觉这个命令 ,看起来是用来找一个Class到底在那一个jar文件里的. 虽然没有再测一下,估计是好使的. 先在博客园里记下来,防止自己忘掉. findstr /S /M org. ...

  9. OpenCV玩耍(一)批量resize一个文件夹里的所有图像

    鉴于用caffe做实验的时候,里面牵扯到一个问题是必须将训练集和测试集都转成256*256的图像,而官网给出的代码又不会用,所以我用opencv转了.其实opencv只转一幅图会很简单,关键在于“批量 ...

随机推荐

  1. mysql 2 修改表

    1 修改表名 rename table aaa to bbb; 或者 rename table aaa to bbb; 2 修改字段的数据类型 alter table person modify na ...

  2. 从零开始搭建自己的.NET Core Api框架-1目录

    https://www.cnblogs.com/RayWang/p/9216820.html 系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. ...

  3. sql 批量插入

    create  PROCEDURE insertinto as begindeclare @id int;set @id=1;while @id<10begininsert into perso ...

  4. Pandas进阶之提升运行效率

    前言 如果你现在正在学习数据分析,或者正在从事数据分析行业,肯定会处理一些大数据集.pandas就是这些大数据集的一个很好的处理工具.那么pandas到底是什么呢?官方文档上说: " 快速, ...

  5. 如何结合插件 vue-lazyload 来简单实现图片懒加载?

    插件地址:https://www.npmjs.com/package/vue-lazyload: 一.使用场景: 在项目中有很多条数的信息,且图片很多的时候,不需要一次把整个页面的图片都加载完,而是在 ...

  6. 微信小程序tabBar与redirectTo 或navigateTo冲突

    微信小程序tabBar与redirectTo 或navigateTo冲突 tabBar设置的pagePath无法再次被redirectTo或navigateTo引用 导致跳转失败,更改为swithTa ...

  7. 移动端适配flexible.js

    npm install lib-flexible --save npm install px2rem-loader --save-dev

  8. 运动的border,仿当当简易效果

    突然想到以前看到当当上有个效果,当鼠标移上去,图片边框是运动添加上的,还以为是css3或者是canvas做的呢,做完幽灵按钮后,才知道,so  easy,只不过是animate+position的杰作 ...

  9. nRF24L01无线介绍

    CE:RX或TX模式选择 CSN:SPI片选信号 SCK:SPI时钟 MOSI:SPI数据输入 MISO:SPI数据输出 IRQ:可屏蔽中断脚 51测试程序 实测可用! #define TX_ADR_ ...

  10. 程哥带你学python-[第一章-初识Python]

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Perl语言一样, Pyt ...