2009-08-04 4 views
21

У меня есть два набора объектов, где в некоторых случаях первый набор будет использоваться как клавиши для другого набора, а в других случаях второй набор будет использоваться как клавиши для первого. Кроме того, в любом списке не должно быть дубликатов.Двунаправленный словарь?

Что было бы хорошей структурой данных для использования? Должен ли я использовать два словаря для этого или есть более умные способы?

+4

Существует реализация двунаправленного словаря Jon Skeet @ http://stackoverflow.com/questions/255341/getting-key-of-value-of- a-generic-dictionary # 255630. И да, стандартный способ достичь этого - использовать 2 словаря. – Falaina

ответ

8

Кто-то, кто лучше разбирается в структурах данных, вероятно, может дать лучший совет, но лично я бы использовал 2 словаря для удобства использования. Вы можете сделать то же самое с 1 словарем, но время доступа увеличится.

Редактировать: дерьмо, я был просто в процессе написания некоторого кода, как я хотел бы сделать это, и я увидел, что Falaina отправил это что та же самая идея, что я делал, только гораздо лучше: Getting key of value of a generic Dictionary?

+0

O, хорошо. Примите это как ответ в этом вопросе тогда :) – Svish

2

Обычно это называется двунаправленной картой. Если вам не нравятся PowerCollections, здесь есть специальная реализация: Bidirectional 1 to 1 Dictionary in C#

Смежные вопросы