Según tengo entendido, hay un par de formas (tal vez otras también) de crear una copia superficial de a Map
en 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();
¿Se prefiere una forma sobre la otra y, de ser así, por qué?
Una cosa que vale la pena mencionar es que la segunda forma muestra una advertencia de "Reparto sin marcar". Así que tienes que agregar @SuppressWarnings("unchecked")
para evitarlo, lo cual es un poco irritante (ver más abajo).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}