java中的ArrayList应该都不陌生了,实际上用C++的指针来理解应该更为贴切,不说了 ,上代码:
Map<String, ArrayList<String>> m = new HashMap<String, ArrayList<String>>;
ArrayList<String> a = new ArrayList<String>;
m.put("test", a);
m.get("test").add("I am here");
System.out.println(a.size());
这段代码的输出是1,说明调用m.put方法时,传递的是ArrayList的地址,即所谓的浅复制,并没有拷贝a,虽然java中并没用地址的概念。