public static <K, V> Map<K, V> withDefaults(Map<K, V> receiver, Map<K, V> defaults) { HashMap<K, V> map = new HashMap<K, V>(receiver); for (final Map.Entry<K, V> entry : defaults.entrySet()) { putIfMissing(map, entry.getKey(), new RunnableValue<V>() { @Override public V run() { return entry.getValue(); } }); } return map; }
public static <K, V> Map<K, V> withDefaults(Map<K, V> receiver, Map<K, V> defaults) { HashMap<K, V> map = new HashMap<K, V>(receiver); for (final Map.Entry<K, V> entry : defaults.entrySet()) { putIfMissing(map, entry.getKey(), new RunnableValue<V>() { @Override public V run() { return entry.getValue(); } }); } return map; }