【Java】ArrayList与HashMap踩的坑

ArrayList与HashMap踩的坑

氷落发布于 今天 02:40

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);

}

}

javahashmaparraylist

阅读 22发布于 今天 02:40

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议


30岁程序员的挣扎之路

一个年过30,苦苦挣扎的程序员......

avatar

氷落

一个年过30,苦苦挣扎的程序员......

4 声望

0 粉丝

0 条评论

得票时间

avatar

氷落

一个年过30,苦苦挣扎的程序员......

4 声望

0 粉丝

宣传栏

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);

}

}

以上是 【Java】ArrayList与HashMap踩的坑 的全部内容, 来源链接: www.h5w3.com/113317.html

回到顶部