Почему итерация по набору записей не работает?

#java #hashmap #entryset

#java #hashmap #набор записей

Вопрос:

Я пытаюсь выполнить итерацию по набору записей следующим образом:

  for (Entry<A, List<B>> list : service.entrySet()) {
                if (list.getKey() == typ1) {
                    for (B current : list.getValue()) {                            
                      // do sth
                    }
                }
               
                } else {
                    PrintHelper.printOut("not implemented case"
                              list.getKey());
                }
            }
       }
  

Даже если у меня есть эта часть, if (list.getKey() == typ1) я все равно получаю напечатанный регистр not implemented case typ1 .

Почему это так? Что я делаю не так с итерацией / случаем if?

Комментарии:

1. Являются typ1 и возвращаемым значением list.getKey() строк или любого вида объекта? Если это так, сравните их с equals() , а не с ‘ ==’ .

Ответ №1:

Ключ карты (или запись карты) является объектом — вам нужно сравнить его с equals , а не == :

 if (list.getKey().equals(typ1)) {