HashMap и инкрементные значения в Processing - PullRequest
1 голос
/ 28 октября 2009

У меня есть HashMap, который я использую в обработке, и я хотел бы увеличить значение на карте. Я запустил Google, и он показал мне, что следующий код верен:

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

Я продолжаю получать:

Оператор + не определен для типа (ов) аргумента Object, int

Я не Java-кодер, но в справочнике говорится, что он возвращает объект ... мне нужно использовать метод .getValue () для извлечения int?

Может я что-то не так делаю? Хммм.

Привет.

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

По умолчанию HashMap позволит вам хранить объекты любого типа без проверки типа объекта, используемого для ключей или значений.

Вы должны попытаться объявить свою HashMap, используя безопасное объявление вашей карты:

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

(обратите внимание, что я предполагаю, что ключи для карты - java.awt.Color, а значения всегда int)

0 голосов
/ 28 октября 2009

Я ничего не знаю о 'Обработка', но, глядя на приведенный выше код, перед добавлением необходимо ввести значение в целое число.

Не уверен, какая версия Java используется здесь, но вы можете сделать что-то вроде этого.

if (colors.containsKey(ckey)) 
{ 

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