lo que tengo entendido, hay un par de maneras (tal vez otros también) para crear una copia superficial de un Map
en Java:copia superficial de un mapa 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();
es una manera preferida sobre el otro, y si es así, ¿por qué?
Una cosa que vale la pena mencionar es que la segunda forma da una advertencia de "rechazo no verificado". Por lo tanto, debe agregar @SuppressWarnings("unchecked")
para evitarlo, lo cual es un poco irritante (vea a continuación).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}
agradable respuesta, gracias. – dcp
Sí, esta es una de mis partes favoritas del libro. – polygenelubricants
No me gusta decir que el clon() está roto. Prefiero decir que el clon fue una decisión de diseño terrible y puede hacerte mucho daño si no lo usas correctamente.Además, es posible que nunca confíes en los métodos de otras personas clone(). Así que terminamos de manera similar, tratamos de evitarlo, pero no está roto. – santiagobasulto