Как реализовать многоиндексный словарь? - PullRequest
29 голосов
/ 01 октября 2009

В основном я хочу что-то вроде словаря , но не (как я видел здесь в другом вопросе) с ключами в AND, а в OR. Чтобы лучше объяснить: я хочу иметь возможность найти элемент в словаре, предоставляющий только один из ключей, а не оба.

Я также думаю, что мы должны учитывать безопасность потоков и возможность простого масштабирования до решения Dictionary ...

Ответы [ 11 ]

0 голосов
/ 01 октября 2009

Два словаря, но не дублируйте элементы в каждом.

У вас будет словарь значений и словарь ключей.

Когда вы вызываете метод add, вы генерируете GUID, добавляете его и ключ в словарь ключей.

Затем используйте GUID в качестве ключа к словарю значений.

Если вы хотите добавить два ключа, вы добавите еще один элемент в словарь ключей с тем же GUID.

Конечно, это означает, что для каждого поиска требуются две проверки данных, но не более, даже если у вас есть 50 ключей для одного и того же значения.

Поиск guid на основе ключа из таблицы ключей, затем поиск данных на основе этого guid в таблице значений.

...