HashMap et incrémentation de valeurs dans Processing
-
06-07-2019 - |
Question
J'ai une carte de hachage que j'utilise dans Processing et j'aimerais incrémenter la valeur dans la carte. Je l’ai fait sur Google et il m’a montré que le code suivant était correct:
if (colors.containsKey(ckey))
{
colors.put(ckey, colors.get(ckey) + 1);
} else {
colors.put(ckey, 1);
}
Je continue à recevoir:
L'opérateur + n'est pas défini pour le type d'argument Object, int
Je ne suis pas un codeur Java, mais la référence indique qu'elle renvoie un objet. Dois-je utiliser une méthode .getValue () dessus pour extraire l'int?
Peut-être que je fais autre chose de mal? Hmmm.
Cordialement.
La solution
Je ne connais rien à 'Processing', mais en regardant le code ci-dessus, vous devez transtyper la valeur en un entier avant de l'ajouter.
Vous ne savez pas quelle version de Java est utilisée ici, mais vous pouvez faire quelque chose comme ça.
if (colors.containsKey(ckey))
{
int val = ((Integer) colors.get(ckey)).intValue();
colors.put(ckey, new Integer(val + 1);
}
else
{
colors.put(ckey, 1);
}
Autres conseils
Par défaut, HashMap vous permettra de stocker tout type d'objet sans vérifier le type d'objet utilisé pour les clés ou les valeurs.
Vous devriez essayer de déclarer votre HashMap à l'aide de la déclaration de type de votre carte:
HashMap<Color, Integer> colors = new HashMap<Color, Integer>();
(notez que je suppose que les clés de la carte sont java.awt.Color et que les valeurs sont toujours int)