Pregunta

Tengo un HashMap que estoy usando en Processing y me gustaría incrementar el valor en el mapa. Lo busqué en Google y me mostró que el siguiente código es correcto:

if (colors.containsKey(ckey))
{
    colors.put(ckey, colors.get(ckey) + 1);
} else {
    colors.put(ckey, 1);
}

Sigo recibiendo:

El operador + no está definido para los tipos de argumento Object, int

No soy un codificador de Java, pero la referencia dice que devuelve un Object ... ¿tengo que usar un método .getValue () para extraer el int?

¿Tal vez estoy haciendo algo más mal? Hmmm.

Saludos.

¿Fue útil?

Solución

No sé nada sobre 'Procesamiento' pero al mirar el código anterior, debe convertir el valor en un entero antes de agregarlo.

No estoy seguro de qué versión de Java se está utilizando aquí, pero puede hacer algo como esto.

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}

Otros consejos

De manera predeterminada, HashMap le permitirá almacenar cualquier tipo de objeto sin verificar el tipo de objeto que se utiliza para claves o valores.

Debería intentar declarar su HashMap utilizando la declaración de tipo seguro de su mapa:

HashMap<Color, Integer> colors = new HashMap<Color, Integer>();

(tenga en cuenta que supongo que las claves para el mapa son java.awt.Color y los valores siempre son int)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top