Двунаправленный словарь?
У меня есть два набора объектов, где в некоторых случаях первый набор будет использоваться как ключи для другого набора, а в других случаях второй набор будет использоваться как клавиши для первого. Кроме того, в любом списке не должно быть дубликатов.
Какая была бы хорошая структура данных для этого? Должен ли я использовать два словаря для этого или есть более разумные способы?
Ответы
Ответ 1
Кто-то, кто лучше разбирается в структурах данных, вероятно, может дать лучший совет, но лично я бы использовал 2 словаря для удобства использования. Вы можете сделать то же самое с 1 словарем, но время доступа увеличится.
Изменить: дерьмо, я только что написал код, как бы это сделал, и я увидел, что Falaina опубликовала это, что является той же идеей, что я делал только намного лучше: Получение ключа от общего словаря?
Ответ 2
Обычно это называется двунаправленной картой. Если вам не нравится PowerCollections, здесь есть специальная реализация: Двунаправленный словарь 1 на 1 в С#
Ответ 3
Есть несколько коллекций мультикейдов. Попробуйте:
http://powercollections.codeplex.com/
или
http://www.codeproject.com/KB/recipes/multikey-dictionary.aspx
Коллекции источников энергии Wintellect, вероятно, отличное место для запуска. Они имеют проверенный MultiDictionary как часть своего пакета.