我只是不明白为什么会打印出111111111111,希望大家给个解释,谢谢了!
public static void main(String[] args) {
List lst = new ArrayList();
for (int i = 0; i < 5; i++) {
Map map = new HashMap();
map.put("test_"+i, i);
lst.add(map);
}
for (int i = 0; i < lst.size(); i++) {
Map map = (Map)lst.get(i);
map.put("test_"+i, "111111111111");
}
for (int i = 0; i < lst.size(); i++) {
Map map = (Map)lst.get(i);
System.out.println(map.get("test_"+i));
}
}
public static void main(String[] args) {
List lst = new ArrayList();
for (int i = 0; i < 5; i++) {
Map map = new HashMap();
map.put("test_"+i, i);
lst.add(map);
}
for (int i = 0; i < lst.size(); i++) {
Map map = (Map)lst.get(i);
map.put("test_"+i, "111111111111");
}
for (int i = 0; i < lst.size(); i++) {
Map map = (Map)lst.get(i);
System.out.println(map.get("test_"+i));
}
}
for (int i = 0; i < lst.size(); i++) {
Map map = (Map)lst.get(i);
map.put("test_"+i, "111111111111");
}
原来 通过这一步就能更新list啊! 我以前一直以为这样不会更新list内部的元素。 汗
Map map = (Map)lst.get(i);
map.put("test_"+i, "111111111111");
}你上面这句话已经把map里面的值给换掉了啊,当然都是111111111了啊
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class T {
// 我只是不明白为什么会打印出111111111111,希望大家给个解释,谢谢了!
public static void main(String[] args) {
List lst = new ArrayList();
for (int i = 0; i < 5; i++) {
Map map = new HashMap();
map.put("test_" + i, i);
lst.add(map);
// System.out.println(("test_" + i)+"--->"+map.get("test_" + i));
// test_0--->0
// test_1--->1
// test_2--->2
// test_3--->3
// test_4--->4
} for (int i = 0; i < lst.size(); i++) {
Map map = (Map) lst.get(i);
map.put("test_" + i, "111111111111");
// System.out.println(("test_" + i)+"--->"+map.get("test_" + i));
// test_0--->111111111111
// test_1--->111111111111
// test_2--->111111111111
// test_3--->111111111111
// test_4--->111111111111
} for (int i = 0; i < lst.size(); i++) {
Map map = (Map) lst.get(i);//取出的每个元素都是一个map的映射关系对
System.out.println(map.get("test_" + i));
// System.out.println(("test_" + i)+"--->"+map.get("test_" + i));
// test_0--->111111111111
// test_1--->111111111111
// test_2--->111111111111
// test_3--->111111111111
// test_4--->111111111111
}
}
}通过我的注释,希望你能看明白。其实主要是你的
for (int i = 0; i < lst.size(); i++) {
Map map = (Map) lst.get(i);
map.put("test_" + i, "111111111111");
}
将map里面的值给替换了,然后到后面一直是
// test_0--->111111111111
// test_1--->111111111111
// test_2--->111111111111
// test_3--->111111111111
// test_4--->111111111111
这些值。