Коллекция, требующая два ключа для уникального значения - PullRequest
0 голосов
/ 02 мая 2011

Мне было интересно, знает ли кто-нибудь хороший способ хранения данных, чтобы они индексировались двумя ключами.По сути, мне нужно что-то вроде таблицы (верхняя строка - это key1, левый столбец - это key2, буквы - это значения, возвращаемые при индексации):

[ ] [1] [2] [3] [4]
[1] [A] [B] [C] [D]
[2] [B] [E] [F] [G]
[3] [C] [F] [H] [I]
[4] [D] [G] [I] [J]

Я мог бы легко реализовать это как многомерный массив, но так какполовина таблицы всегда идентична, это казалось излишним.До сих пор лучшее решение, которое я могу придумать, включает в себя двухмерный список, где второе измерение имеет переменную длину, в то время как первый или два больших ключа должны быть проиндексированы первыми.Это превращает таблицу в:

[ ] [1] [2] [3] [4]
[1] [A]
[2] [B] [E]
[3] [C] [F] [H]
[4] [D] [G] [I] [J]

У кого-нибудь есть идеи получше?

Редактировать: Возможно, я нашел решение самостоятельно.Смотрите комментарии.

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Рекомендую:

Dictionary<Tuple<int, int>, char>

если ваш стол не будет очень большим.

0 голосов
/ 02 мая 2011

Если вы работаете в .NET 4, вам следует взглянуть на класс Tuple.

IDictionary<Tuple<K1, K2>, V> - это правильный способ представления словаря из двух ключей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...