Мне нужно было сделать то же самое, что вы описываете, я использовал мультикарту из общих коллекций и написал свою собственную обратную функцию. (Это было по крайней мере 3 года назад с использованием jdk1.4, поэтому guava не был вариантом.)
Но если вы изменили исходную карту на SetMultimap (я в любом случае предпочитаю мультикарты при сопоставлении ключей с коллекциями значений, поскольку они упрощают вставку значений), тогда вы можете использовать com.google.common.collect.Multimaps .invertFrom
public static <K,V,M extends Multimap<K,V>> M invertFrom(Multimap<? extends V,? extends K> source,
M dest)
Copies each key-value mapping in source into dest, with its key and value reversed.
Parameters:
source - any multimap
dest - the multimap to copy into; usually empty
Returns:
dest