日期:2014-05-20  浏览次数:20565 次

map中是传值还是引用
我有个工程,大量的从一个Map中取出String,再存入另两个Map,有点担心内存。

f(Map map1,Map map2,Map map3){
 String s = (String)map1.get("a"); //取出来的s是值还是引用?
 map2.put("a",s); //存入的s是值还是引用?
 map3.put(s,"a"); //存入的s是值还是引用?
}

我理解,java传的都是引用,也就是3个map中用的都是同一个s,不会拷贝3份。
想确认一下。

------解决方案--------------------
引用:
3个map中用的都是同一个s,不会拷贝3份。


没错。
------解决方案--------------------
引用:
引用:3个map中用的都是同一个s,不会拷贝3份。

没错。


虽然理论上说,取决于 Map 的具体实现。

常用的 HashMap, TreeMap 都是你想的那样。
------解决方案--------------------
lz可以用 == 试试, 相等就是一样了
------解决方案--------------------
这java中,基本上你不去new一下,或者不去重写=号,基本上都是传引用