Pergunta

Eu tenho um HashMap que eu estou usando no processamento e eu gostaria de incrementar o valor no mapa. I Google'd-lo e ele me mostrou que o seguinte código está correto:

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

Recebo:

O operador + é indefinido para o tipo de argumento (s) de objectos, int

Eu não sou um programador Java mas a referência diz ele retorna um objeto ... eu tenho que usar um método .getValue () nele para extrair o int?

Talvez eu estou fazendo algo errado? Hmmm.

Cumprimentos.

Foi útil?

Solução

Eu não sei nada sobre 'Processamento' mas olhando para o código acima, você precisa typecast o valor em um número inteiro antes de adicionar.

Não tenho certeza versão que de Java está sendo usada aqui, mas você pode fazer algo como isto.

if (colors.containsKey(ckey)) 
{ 

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

Outras dicas

Por padrão, o HashMap vai deixar você armazenar qualquer tipo de objeto sem verificar o tipo de objeto que está sendo usada tanto para chaves ou valores.

Você deve tentar declarar o seu HashMap usando a declaração de seu mapa tipo seguro:

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

(note que eu estou supondo que as chaves para o mapa são java.awt.Color e os valores são sempre int)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top