Pelo que entendi, existem algumas maneiras (talvez outras também) de criar uma cópia superficial de um Map
em Java:
Map<String, Object> data = new HashMap<String, Object>();
Map<String, Object> shallowCopy;
// first way
shallowCopy = new HashMap<String, Object>(data);
// second way
shallowCopy = (Map<String, Object>) ((HashMap<String, Object>) data).clone();
Uma forma é preferida à outra e, em caso afirmativo, por quê?
Uma coisa que vale a pena mencionar é que a segunda forma dá um aviso de "Elenco não verificado". Então você tem que adicionar @SuppressWarnings("unchecked")
para contornar isso, o que é um pouco irritante (veja abaixo).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}