Frage

Ich habe eine HashMap, die ich in Bearbeitung bin mit, und ich möchte den Wert in der Karte erhöhen. Ich Google'd es und es hat mir gezeigt, dass der folgende Code korrekt ist:

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

Ich erhalte:

Der Operator + ist für das Argument Art (en) Object, int

undefined

Ich bin kein Java-Coder aber der Verweis sagt es ein Objekt zurückgibt ... muss ich auf eine .getValue () Methode verwenden, um die int zu extrahieren?

Vielleicht mache ich etwas anderes falsch? Hmmm.

Viele Grüße.

War es hilfreich?

Lösung

Ich weiß nichts über ‚Verarbeitung‘ aber bei den obigen Code suchen, müssen Sie den Wert in eine ganze Zahl typisieren vor der Zugabe.

nicht sicher, welche Version von Java wird verwendet, wobei hier aber man kann so etwas tun.

if (colors.containsKey(ckey)) 
{ 

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

Andere Tipps

Standardmäßig ist die HashMap werden Sie jede Art von Objekt lassen speichern, ohne die Art des Objekts Überprüfung entweder für Schlüssel oder Werte verwendet werden.

Sie sollten versuchen, Ihre HashMap mit der typsichere Erklärung Ihrer Karte zu deklarieren:

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

(beachten Sie, dass ich die Schlüssel für die Karte gehe mal davon sind java.awt.Color und Werte sind immer int)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top