我有一个静态hashmap:
private static HashMap<String, byte[]> mDrawables = new HashMap<>();
通过线程我将图像作为byte []下载,我想将这个新的hashmap添加到静态hashmap。
protected void onResult(String srv, HashMap<String, byte[]> drawables) {
super.onResult(srv, drawables);
mDrawables.putAll(drawables);
}
但每次调用 putAll 时, mDrawables 上的所有信息都会被清除。 我怎么能把新的地图键,值一次性添加到静态?
答案 0 :(得分:1)
嗯,符合JavaDoc:
/**
* Copies all of the mappings from the specified map to this map.
* These mappings will replace any mappings that this map had for
* any of the keys currently in the specified map.
*
* @param m mappings to be stored in this map
* @throws NullPointerException if the specified map is null
*/
因此,相同的键将被替换。您可以在一个周期中使用Map#put()
并自行检查,如下所示:
for (Map.Entry<String, byte[]> entry : drawables.entrySet()) {
if (mDrawables.containsKey(entry.getKey())) {
// duplicate key is found
} else {
mDrawables.put(entry.getKey(), entry.getValue());
}
}