我为Android应用程序创建了一个HashMap,并根据需要使用下面的addVaue()函数添加对象。当添加一个新值时,包含3个先前添加的哈希表会更改内存中的表,最终会删除最近插入的值(样本中的名称)。我已经包含了显示" objectAttributes"。
表的调试器图像private Map<String, Object> objectAttributes=new HashMap<String, Object>();
public void addValue(String key, String value) throws InvalidMessageExcption
{
if(hasAttribute(key)) {
try {
JSONArray jArray = new JSONArray(value);
objectAttributes.put(key, jArray);
}
catch(JSONException je) {
objectAttributes.put(key, value);
}
}
else
throw new InvalidMessageExcption();
}
[0] id - "123"
[1] address - "10 Anystreet St"
[2] null
[3] name - "Test Name"
[0] id - "123"
[1] null
[2] null
[3] null
[4] null
[5] address - "10 Anystreet St"
[6] null
[7] contacts - [JSONArray]
调试器视图之间调用的唯一代码是 objectAttributes.put(key,jArray); 行。由add触发的表的扩展会丢弃最后一个值;扩展逻辑似乎有缺陷。
有没有人经历过这个和/或对发生的事情以及如何避免提出建议?
答案 0 :(得分:0)
在&#39; addValue&#39;的开头添加一行Log.d(TAG, "value=" + value);
。查看是否将空值传递给addValue
。
答案 1 :(得分:0)
我唯一能想到的就是在某处调用HashMap的remove()方法。
也许在remove()方法中放置一个调试停止点来检查这是否确实发生了什么?
编辑:此外,您确定要查看包含objectAttributes的类的相同实例吗?也许包含类有多个实例?