Я не знаю, подходит ли вам это решение, но вы можете легко реализовать это, используя стандартную карту из ключей в значения и MultiMap из значений в ключ.
Конечно, вам придется позаботиться о синхронизации двух структур, т.е., когда вы удаляете ключ из карты, вы должны удалить сам ключ из набора ключей, сопоставленных со значением в мультикарте.
Это не кажется сложным для реализации, возможно, немного тяжелым с точки зрения накладных расходов памяти.