Хэш-карта и увеличивающиеся значения при обработке

StackOverflow https://stackoverflow.com/questions/1635127

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

Может быть, я делаю что-то еще неправильно?Хммм.

С уважением.

Это было полезно?

Решение

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

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

if (colors.containsKey(ckey)) 
{ 

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top