来看一段代码,猜一下运行结果!
//给 list 放入 2个map对象
List<Map> list = new ArrayList<Map>();
Map map1 = new HashMap();
map1.put("name","张三");
map1.put("count",2);
list.add(map1);
Map map2 = new HashMap();
map2.put("name","李四");
map2.put("count",3);
list.add(map2);
//遍历 list , 并按照 map 的 count 数,生成 多个map,并为map 添加上 index
int index = 1;
List<Map> result = new ArrayList<Map>();
for(Map m : list){
int count = (Integer) m.get("count");
//循环count
for(int i=0;i<count;i++){
m.put("index",index);
result.add(m);
System.out.println(m.get("name")+","+m.get("index"));
index+=2;
}
}
//打印result
System.out.println("=========result============");
for(Map m:result){
System.out.println(m.get("name")+","+m.get("index"));
}
//你知道 result 的内容是什么吗?
输出结果:
浅复制:
//给 list 放入 2个map对象
List<Map> list = new ArrayList<Map>();
Map map1 = new HashMap();
map1.put("name","张三");
map1.put("count",2);
list.add(map1);
Map map2 = new HashMap();
map2.put("name","李四");
map2.put("count",3);
list.add(map2);
//遍历 list , 并按照 map 的 count 数,生成 多个map,并为map 添加上 index
int index = 1;
List<Map> result = new ArrayList<Map>();
for(Map m : list){
int count = (Integer) m.get("count");
//循环count
for(int i=0;i<count;i++){
m.put("index",index);
//result.add(m);
//============只修改了这里(浅复制)===============
Map info = new HashMap();
info = m;
result.add(info);
//============只修改了这里===============
System.out.println(m.get("name")+","+m.get("index"));
index+=2;
}
}
//打印result
System.out.println("=========result============");
for(Map m:result){
System.out.println(m.get("name")+","+m.get("index"));
}
//你知道 result 的内容是什么吗?
打印结果:
深度复制:
//给 list 放入 2个map对象
List<Map> list = new ArrayList<Map>();
Map map1 = new HashMap();
map1.put("name","张三");
map1.put("count",2);
list.add(map1);
Map map2 = new HashMap();
map2.put("name","李四");
map2.put("count",3);
list.add(map2);
//遍历 list , 并按照 map 的 count 数,生成 多个map,并为map 添加上 index
int index = 1;
List<Map> result = new ArrayList<Map>();
for(Map m : list){
int count = (Integer) m.get("count");
//循环count
for(int i=0;i<count;i++){
m.put("index",index);
//result.add(m);
//============只修改了这里(深复制)===============
Map info = new HashMap();
info.putAll(m);
result.add(info);
//============只修改了这里===============
System.out.println(m.get("name")+","+m.get("index"));
index+=2;
}
}
//打印result
System.out.println("=========result============");
for(Map m:result){
System.out.println(m.get("name")+","+m.get("index"));
}
//你知道 result 的内容是什么吗?
运行结果:
感谢您的支持,如对您有所帮助,请您打赏,谢谢啦~