首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

java 中关于地图的赋值有关问题

2012-09-06 
java 中关于map的赋值问题贴上部分代码:MapString, MapString, Integer fingerprintMapString, Inte

java 中关于map的赋值问题
贴上部分代码:
Map<String, Map<String, Integer>> fingerprint;
Map<String, Integer> in;
in = new HashMap();
fingerprint = new HashMap();
  in.put("1-TP-LINK_2348CC", -66);
  in.put("1-hit404", -70);
  in.put("1-441", -97);
  in.put("1-422", -100);
  fingerprint.put("new404", in);
//==================================================
  in.clear();
  in.put("2-TP-LINK_PocketAP_584322", -81);
  in.put("2-Connectify-xxxx", -85);
  in.put("2-441", -99);
  fingerprint.put("new410", in);

上面是部分代码,调试过程中,当执行完===上面的部分时fingerprint中的内容还是正常的,为:
{new404={1-422=-100, 1-TP-LINK_2348CC=-66, 1-441=-97, 1-hit404=-70}}
但是再执行完====下面的语句时,fingerprint中的内容就变成这样了:
{new410={2-Connectify-xxxx=-85, 2-441=-99, 2-TP-LINK_PocketAP_584322=-81}, new404={2-Connectify-xxxx=-85, 2-441=-99, 2-TP-LINK_PocketAP_584322=-81}}

我觉得很诧异阿,为什么会是这个结果,按理说结果应该是:
{new404={1-422=-100, 1-TP-LINK_2348CC=-66, 1-441=-97, 1-hit404=-70}, new404={2-Connectify-xxxx=-85, 2-441=-99, 2-TP-LINK_PocketAP_584322=-81}}
有哪位能给解释一下,我什么地方错了?

[解决办法]
in.clear();改为in = new HashMap<String, Integer>();
[解决办法]
你in.clear()之后变成这样fingerprint.put("new404", {});此时in={};
然后下面你又向fingerprint里面put了一个in变成这样 fingerprint.put("new410", in);相当于不仅新添加了一个in,而且你给in又赋了一次值,所以fingerprint有连个key了,而且值都是in的值。

不知道我讲清楚了没有,希望能帮助到你。

热点排行