package com.baeldung.map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.lang3.SerializationUtils; public class CopyHashMap { public static HashMap copyUsingConstructor(HashMap originalMap) { return new HashMap(originalMap); } public static HashMap copyUsingClone(HashMap originalMap) { return (HashMap) originalMap.clone(); } public static HashMap copyUsingPut(HashMap originalMap) { HashMap shallowCopy = new HashMap(); Set> entries = originalMap.entrySet(); for(Map.Entry mapEntry: entries) { shallowCopy.put(mapEntry.getKey(), mapEntry.getValue()); } return shallowCopy; } public static HashMap copyUsingPutAll(HashMap originalMap) { HashMap shallowCopy = new HashMap(); shallowCopy.putAll(originalMap); return shallowCopy; } public static HashMap copyUsingJava8Stream(HashMap originalMap) { Set> entries = originalMap.entrySet(); HashMap shallowCopy = (HashMap) entries .stream() .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); return shallowCopy; } public static HashMap shallowCopy(HashMap originalMap) { return (HashMap) originalMap.clone(); } public static HashMap deepCopy(HashMap originalMap) { return SerializationUtils.clone(originalMap); } }