ArrayList与HashMap踩的坑

Posted 氷落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList与HashMap踩的坑相关的知识,希望对你有一定的参考价值。

ArrayList与HashMap踩的坑

1. 错误的代码

package com.xrluo.type09;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Demo3
{
    public static void main(String[] args)
    {

        ArrayList<Map<String, Object>> list = new ArrayList<>();
        HashMap<String, Object> map = new HashMap<>();
        /*
            这个地方是不是可以理解为 list map都是指向一个内存的地址
         */
        map.put("key1","value1");
        map.put("key2","value2");

        /*
            {key1=value1, key2=value2}
            此处是不是可以理解为 把map的内存地址存入到list中
         */
        list.add(map);
        /*
            [{key1=value1, key2=value2}]
         */

        /*
            此处继续操作的事map的内存地址中的数据,所以会替换了上面的数据
         */
        map.put("key1","value3");
        map.put("key2","value4");
        /*
        list == [{key1=value3, key2=value4}]
        */

        list.add(map);
        /*
            list == [{key1=value3, key2=value4}, {key1=value3, key2=value4}]
        */
        System.out.println(list);
        System.out.println(map);
    }
}

2. 正确写法

package com.xrluo.type09;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Demo3
{
    public static void main(String[] args)
    {

        ArrayList<Map<String, Object>> list = new ArrayList<>();
        HashMap<String, Object> map;

        map = new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");
        list.add(map);
        /*
            [{key1=value1, key2=value2}]
         */
        map = new HashMap<>();
        map.put("key1","value3");
        map.put("key2","value4");
        /*
        list == [{key1=value1, key2=value2}]
        */

        list.add(map);
        /*
            list == [{key1=value1, key2=value2}, {key1=value3, key2=value4}]
        */
        System.out.println(list);
        System.out.println(map);
    }
}

以上是关于ArrayList与HashMap踩的坑的主要内容,如果未能解决你的问题,请参考以下文章

包含不同片段的HashMap(或ArrayList)

ArrayList 和 HashMap 的默认大小是多数?

VS2019 配置opencv踩的坑

CentOs安装Redis集群版踩的坑

django中使用filter()(即对QuerySet操作)时踩的坑

记录vue中踩的坑