java代码的疑问

lele140 2012-01-10 09:02:44

public static void main(String[] args) {
// TODO Auto-generated method stub

List<Map> list1 = new ArrayList<Map>();
Map map = new HashMap();
map.put("name", "123");
list1.add(map);

for(int i =0;i<list1.size();i++){
Map tempMap = (Map)list1.get(i);
tempMap.put("name", tempMap.get("name")+"@@");
}
System.out.println("list1-->" + list1.get(0).get("name"));
}

代码很简单,相信大家都看懂了,我的疑惑是:为什么list1中放的map的值在经历了一个for循环之后,map拿到的值就变了?毕竟我没有对list1中的map进行任何操作啊?还望各位大侠给小弟指明一下
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
车把式 2012-01-11
  • 打赏
  • 举报
回复
List<Map> list1 = new ArrayList<Map>();
Map map = new HashMap();
----------------------------------------------------
Map tempMap = (Map)list1.get(i);
tempMap.put("name", tempMap.get("name")+"@@");
--------------------------------------------------
map 与tempMap 都指向内存中的同一Map 对象,所以tempMap.put("name", tempMap.get("name")+"@@");会对Map进行操作。可以参考下堆栈内存机制和垃圾回收机制中的引用和对象的关系。

VirusFu 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lele140 的回复:]

引用 3 楼 virusfu 的回复:

在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。

老大,没太理解,能否再讲解一下。我是楼“猪”一个!
[/Quote]

你可以下载一个中文的api,上面说的很详细
cogoming 2012-01-10
  • 打赏
  • 举报
回复
实际上 Map tempMap = (Map)list1.get(i); 这句话实际上就是把你的的引用给了他。。
所以你修改了tempMap 的值就是改了map 引用指向的值。
这句话直接你把他的Key也设置成了一样的就会把原来的替换掉了
tempMap.put("name", tempMap.get("name")+"@@");
lele140 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 virusfu 的回复:]

在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。
[/Quote]
老大,没太理解,能否再讲解一下。我是楼“猪”一个!
yangxiao_jiang 2012-01-10
  • 打赏
  • 举报
回复
传递的是引用。
VirusFu 2012-01-10
  • 打赏
  • 举报
回复
在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。
lele140 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wjsq0705 的回复:]

你说你没对map操作

tempMap.put("name", tempMap.get("name")+"@@");


上面这段断码又是何意?
[/Quote]
我说的没对map进行任何操作不是指tempMap,我是指没有对for循环外的map 做任何操作,怪我没表达清楚。
wjsq0705 2012-01-10
  • 打赏
  • 举报
回复
你说你没对map操作

tempMap.put("name", tempMap.get("name")+"@@");


上面这段断码又是何意?

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧