在list里循环放入map,每次map里的值都不一样,可是放入后再取出来就变成一样的了,求解??

2020-10-27 教育 210阅读
list里面放的是同一个对象map的堆地址,指向的都是同一个对象
你把 Map map = new HashMap();这段代码放到for循环里面就好了,表示list中放的是不同的对象
package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* 测试
*/
public class E1 {
public static void main(String[] args){
List> list=new ArrayList>();
Map map = new HashMap();
for (int i = 0; i < 10; i++) {
map.put(""+i, ""+i) ;
list.add(map);
}
Map map2 = new HashMap();
for (int i = 0; i < list.size(); i++) {
map2 = list.get(i);
for (Iterator iterator = map2.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
System.out.print(key+":"+map2.get(key)+"\t");
}
System.out.println();
}
}
}
输出:
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
3:3 2:2 1:1 0:0 7:7 6:6 5:5 4:4 9:9 8:8
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com