H5W3
当前位置:H5W3 > java > 正文

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

本文地址:H5W3 » 【Java】ArrayList与HashMap踩的坑

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址