Учитывая мои вышеупомянутые предположения в моих комментариях, самый простой способ сделать это, который приходит на ум быстро, - это иметь две структуры.Либо две карты, где ключи в одной являются значениями в другой, и наоборот, либо иметь два отсортированных списка, для которых вы можете выполнить двоичный поиск, и результат, который вы найдете, имеет ссылку на сестринский элемент вдругой список;это даст вам o (log (n)).
Если вы используете две зеркальные карты, как упомянуто выше, вы можете получить o (1), если они оба HashMap
s.Вы можете иметь HashMap и HashMap, а затем иметь структуру, которая инкапсулирует их синхронизацию.