将hashmap添加到另一个

时间:2017-08-14 11:20:59

标签: android hashmap

我有一个静态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 上的所有信息都会被清除。 我怎么能把新的地图键,值一次性添加到静态?

1 个答案:

答案 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());
    }
}