Как хранить информацию о событии, где участвуют два объекта?
У меня есть большое количество объектов, хранятся они все в связном списке. Периодически между двумя объектами происходит некоторое событие. Объекты могут внезапно добавляться в конец списка и удаляться откуда угодно.
Как хранить информацию о произошедшем событии между двумя объектами? Мне нужно знать происходило ли уже это событие.
Сначала думал использовать словарь, словарей, где ключем будет являться объект. Но тут будет либо дублирование информации либо не получение её, т.к. dict[obj1][obj2] != dict[obj2][obj1]. Думал в сторону битовых масок, но типа int не хватит для хранения.
Я думаю, что нужно раздать объектам id и сделать какую-нибудь хэш функцию, которая будет одинаково хэшировать как 1 и 2 так 2 и 1, как 1 и 3 так 3 и 1, и т.д. Но такая функция в голову не приходит.
Как лучше решить поставленную задачу?
Первое, что приходит в голову: взять ID обоих объектов, отсортировать и склеить в строку через какой-нибудь разделитель. Такая "функция" будет давать одинаковый результат и для 1-2, и для 2-1 - что-то навроде "1:2".
Если обратиться к терминологии баз данных, то заведите новую таблицу "События" (для вас это список), а объекты будут ссылаться на элементы этого списка. Если и событие должно ссылаться на объекты, то можно это тоже добавить в таблицу.