为了账号安全,请及时绑定邮箱和手机立即绑定

Hashmap 为所有键显示相同的值

Hashmap 为所有键显示相同的值

翻翻过去那场雪 2021-06-28 13:59:58
我有一个非常简单的代码来使用 arrayList 填充 hashmap。以下是代码片段HashMap<String, ArrayList<String> > fieldValue = new HashMap<String, ArrayList<String>>();ArrayList<String> tmp = new ArrayList<>();tmp.add("f");tmp.add("string");tmp.add("false");fieldValue.put("bas", tmp);tmp.clear();tmp.add("f");tmp.add("string");tmp.add("false");fieldValue.put("usc", tmp);tmp.clear();tmp.add("f");tmp.add("int");tmp.add("false");fieldValue.put("st", tmp);for (Map.Entry r : fieldValue.entrySet()) {    System.out.println(r.getKey() + "\t" + r.getValue());}以下是我执行时的输出st  [f, int, false]usc [f, int, false]bas [f, int, false]问题出在哪儿?我期待 hashmap 值中有不同的值,但它们都是相同的。我错过了什么吗?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

编码

fieldValue.put(..., tmp);

没有克隆列表tmp,它只是把到地图作为一种价值的参考到列表中。

所以最后你在地图中有列表的最后一个内容。

你应该回收的tmp变量,但你应该总是创建一个新的独立的列表。


查看完整回答
反对 回复 2021-07-07
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信