Wie ich es verstehe, gibt es ein paar Möglichkeiten, (vielleicht auch andere) eine flache Kopie eines Map
in Java zu erstellen:Shallow Kopie einer Karte in 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();
ist ein Weg, über bevorzugte der andere, und wenn ja, warum?
Eine erwähnenswerte Sache ist, dass die zweite Möglichkeit eine "ungeprüfte Cast" Warnung gibt. Sie müssen also @SuppressWarnings("unchecked")
hinzufügen, um es zu umgehen, was ein wenig irritierend ist (siehe unten).
@SuppressWarnings("unchecked")
public Map<String, Object> getDataAsMap() {
// return a shallow copy of the data map
return (Map<String, Object>) ((HashMap<String, Object>) data).clone();
}
Nizza Antwort, danke. – dcp
Ja, das ist einer meiner Lieblingsteile des Buches. – polygenelubricants
Ich möchte nicht sagen, dass clone() defekt ist. Ich ziehe es vor zu sagen, dass der Klon eine schreckliche Designentscheidung war und Ihnen viel Schaden zufügen kann, wenn Sie ihn nicht richtig benutzen.Außerdem könnten Sie anderen Personen niemals klone() - Methoden trauen. Also enden wir ähnlich, versuchen es zu vermeiden, aber es ist nicht kaputt. – santiagobasulto