我創建了一個HashMap
十字段:key
類型是String
和value
類型爲double[]
。的Java的HashMap的put()的奇怪行爲
當我嘗試使用put(String id, double[] newVal)
更新地圖時,不僅會更新與「id」鍵關聯的值,還會更新地圖中的所有值。
如何解決此問題?
for (int j = 0;j<attrIndex.length;j ++){
String name = train.attribute(attrIndex [j]).name();
double g = eval.evaluateAttribute(attrIndex[j]);
double[] newVal = {0.0, 0.0};
double w = 1;
if (g == 0.0)
w = 0.5;
newVal = table.get(name);
newVal[0] += g;
newVal[1] += w;
table.put(name, newVal);
}
我敢肯定,你是把所有鍵的相同數組的引用。好吧,這就是答案,但如果你能夠顯示你如何將元素放入Map中的代碼會更好。 –
你可能總是使用相同的數組。告訴我們一些代碼 –
您是否每次使用相同的密鑰? –