Java recursive map deep clone and merge
Java
import java.util.LinkedHashMap;
import java.util.Map;
public final class Maps {
@SuppressWarnings("unchecked")
public static Map<String, Object> clone(Map<String, Object> src) {
Map<String, Object> out = new LinkedHashMap<>();
src.forEach((k, v) -> out.put(k, v instanceof Map ? clone((Map<String, Object>) v) : v));
return out;
}
@SuppressWarnings("unchecked")
public static Map<String, Object> merge(Map<String, Object> base, Map<String, Object> over) {
Map<String, Object> out = clone(base);
over.forEach((k, v) -> out.merge(k, v, (a, b) -> a instanceof Map && b instanceof Map
? merge((Map<String, Object>) a, (Map<String, Object>) b) : b));
return out;
}
}