HashMap<String, Object> Comment faire pour remplacer 1 valeur de l'Objet?
Map<String, Data> map = new HashMap<String,Data>();
map.put("jan", new Data("RED","M4A1",5,0,0));
Comment puis-je changer la valeur ROUGE de l'objet de Données?, sans l'obtention de toutes les informations de la carte avec la clé et la remettre en, comme ceci:
map.put("jan" new Data("Blue",
map.get("jan").Brand,
map.get("jan").Storage,
map.get("jan").Sold,
map.get("jan").Bought));
Alors, comment puis-je changer 1 de la valeur de l'Objet de Données au lieu de les refaire tous?
OriginalL'auteur user1621988 | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Cela dépend si
Data
est mutable. Par exemple, vous pouvez être en mesure d'écrire:N'oubliez pas que la carte ne contient qu'un référence à l'objet, donc, si vous modifiez les données dans l'objet, ce changement va voir si quelqu'un cherche la référence de la carte plus tard.
Ou si c'est immuable, il pourrait avoir un
withColor
méthode, de sorte que vous pourriez écrire:Sans en savoir plus sur votre
Data
type (qui j'espère n'est pas le véritable nom de votre classe), il est difficile d'en dire plus.(J'espère aussi que votre classe n'a pas vraiment de Pascal-tubé champs, et j'espère que ces champs sont privées, mais c'est une autre question...)
l'obtention de toutes les informations de la carte avec la clé et de le remettre dans" Mon interprétation est qu'il n'a pas envie de créer de nouveaux objets et
put
de nouveau dans la carte.Son semblent être mutables. la première option a fait le travail. Merci.
OriginalL'auteur Jon Skeet
En supposant
Data
est mutable vous pouvez définir la"RED"
champ:Si
Data
n'est pas mutable, votre seule option est deput
la nouvelle valeur que vous l'avez écrit.OriginalL'auteur Brian
En supposant
Data
a unsetter
pour lacolor
propriété:Vous pouvez simplement
get
le nécessaireData
objet et définissez sa propriété:OriginalL'auteur João Silva
Ajouter des setter pour votre
Data
classe, par exempleOriginalL'auteur AlexR
S'il vous plaît trouver l'extrait de code:
Maintenant vous pouvez le faire comme ceci:
Cela fonctionne.
Ici les Données de la classe ne contient qu'un seul champ, c'est à dire la couleur. Vous pouvez ajouter d'autres champs.
Grâce
Maintenant s'il vous plaît vérifier ce point.
OriginalL'auteur Shreyos Adikari