Недостатком первого является то, что значение может быть нулевым, ложным, пустой строкой или действительно null
(спасибо Szymon ?)
Все это также будет считаться ложным
Второй заслуживает доверия в этих потенциальных ситуациях, а также лучше выражает ваше намерение будущим читателям вашего кода
Однако, если область действия карты мала, и вы знаете возможные значения, набрать намного быстрее
boolean keyExists = mapFoo.keyThree