我不理解的文字是:
除了它(Map接口)明显使用将一个Map转储到另一个Map之外,它有 第二个,更微妙的用途。假设Map用于表示a 属性 - 值对的集合; putAll操作,在 与Map转换构造函数结合,提供了一种简洁的方法 使用默认值实现属性映射创建。下列 是一种演示此技术的静态工厂方法。
static <K, V> Map<K, V> newAttributeMap(Map<K, V>defaults, Map<K, V> overrides) {
Map<K, V> result = new HashMap<K, V>(defaults);
result.putAll(overrides);
return result;
}
您可以在“地图界面批量操作”标题下找到它here
答案 0 :(得分:1)
您可以使用putAll()
方法将其他地图的元素添加到此地图中。在这种情况下,它被命名为overrides
,告诉您,它会覆盖defaults
中已存在的键值对。即,如果默认值包含键值对A-> B,并且在覆盖中得到A-> C,则得到的映射将仅包含A-> C。
或者如果默认值包含A-> B并且覆盖包含D-> E,那么A.equals(D),则得到的映射将仅具有A(或D两者相等) - &gt; E.
提到的静态方法返回一个新的Map
,它将defaults
与overrides
(具有优先级)相结合并返回它。对于使用Map map = new HashMap(defaults)
的方法; consturctor与putAll
方法结合使用。
答案 1 :(得分:1)
它表示您可以加载默认键值对,并仅覆盖它们的选定子集(如果您选择,则覆盖所有子集)。
例如,您希望使用用户提供的键值创建地图。让我们说,对于部分或全部密钥,存在安全默认值,用户无需为所有密钥提供值。
因此,您使用默认值创建地图,并且调用者仅提供他想要覆盖的地图。在这种情况下,您将要覆盖调用者提供的那些键的值。您可以使用上述机制在看似单一的调用中实现此目的,而不是一个接一个地执行此操作。