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

如:List<Map>:map1:{ID:4,身高:170,体重:60}map2:{ID:4,年龄:20,性别:男}map3:{ID:5,身高:160,体重:50}map... 如:List<Map>:map1:{ID:4,身高:170,体重:60}
map2:{ID:4,年龄:20,性别:男}
map3:{ID:5,身高:160,体重:50}
map4:{ID:5,年龄:19,性别:女}
每一个map中都都有ID序号。如何根据ID序号判断,得到最终的结果?
最终的结果是List<Map>:map1{ID:4,身高:170,体重:60,年龄:20,性别:男}
map2:{ID:5,身高:160,体重:50,年龄:19,性别:女}
展开
 我来答
般码宫
2017-12-25 · 子非鱼,安知阴阳鱼乐
般码宫
采纳数:221 获赞数:458

向TA提问 私信TA
展开全部

不建议使用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中ID相同的所有map合并成一个map在存入到List当中去
追答

你运行看看就知道了

本来就在list里面,为什么要重新保存一次呢

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式