Один из способов сделать это - использовать две Карты. Один Map<Object1, Object2>
и один Map<Object2, Object1>
.
Вы можете добавить каждую пару связанных объектов на обе карты. Таким образом, вы можете очень быстро искать отношения в обоих направлениях. Вам также нужно будет удалить пары с обеих карт, когда связь удалена.
Удаление связей становится немного медленным, но добавление и поиск занимает постоянное время.