Вы почти не предоставили достаточно информации о задействованных типах, но я сильно подозреваю, что это проблема:
if(hMap.get(skey).olddata==comingdata)
Это будет сравнение ссылок , ачем для равенства, если olddata
и comingdata
являются ссылками некоторого вида.(РЕДАКТИРОВАТЬ: Судя по всему, это строковые ссылки.)
Я предполагаю, что вы хотите:
String skey = Integer.toString(i);
if(hMap.get(skey).olddata.equals(comingdata))
{
hMap.get(skey).counter= hMap.get(skey).counter+1;
}
Или, скорее, более эффективно, избегая бессмысленных поисков:
WhateverType value = hMap.get(Integer.toString(i));
if (value.olddata.equals(comingdata))
{
value.counter++;
}
Я бы также предположил, что если вы всегда будете искать по целому числу, почему бы не использовать ключ Integer
вместо того, чтобы всегда преобразовывать целое число в строку?
ДополнительноСтоит следовать соглашениям об именах Java, и вы должны сделать свои поля приватными, если они еще не сделаны.
Если ничего из этого не помогло, пожалуйста, опубликуйте больше кода.Вероятность того, что проблема в HashMap
, а не в вашем коде, невероятно мала.