Ja, du musst durch die Hashmap iterieren, es sei denn, du implementierst etwas entlang der Linien von dem, was diese verschiedenen Antworten vorschlagen. Anstatt mit dem entrySet herumzuspielen, würde ich nur das keySet() holen, darüber iterieren und den (ersten) Schlüssel behalten, der dir den passenden Wert liefert. Wenn du alle Schlüssel benötigst, die diesen Wert entsprechen, musst du offensichtlich das Ganze machen.
Wie Jonas vorschlägt, könnte das bereits das sein, was die containsValue-Methode tut, sodass du diesen Test vielleicht einfach überspringen und jedes Mal die Iteration durchführen kannst (oder vielleicht eliminiert der Compiler bereits die Redundanz, wer weiß).
Im Vergleich zu den anderen Antworten, wenn deine umgekehrte Abbildung so aussieht
Map>
kannst du mit nicht-eindeutigen Schlüssel-Wert-Zuordnungen umgehen, wenn du diese Fähigkeit benötigst (abgesehen davon, sie zu entwirren). Das würde sich gut in eine der Lösungen einfügen, die hier von Leuten vorgeschlagen werden, die zwei Maps verwenden.