Какова лучшая структура для реализации Identity Map? - PullRequest
4 голосов
/ 09 ноября 2008

Несмотря на то, что DataTable - это проблема с памятью, разве DataTable не будет лучшим выбором для реализации и IdentityMap, если набор объектов очень большой, поскольку время поиска равно O (1)?

Обновление

Если я решу использовать IDictionary, я жертвую скоростью при извлечении моих объектов?

Ответы [ 2 ]

5 голосов
/ 09 ноября 2008

Любой из Dictionary<,>, SortedList<,> или SortedDictionary<,> будет очевидным выбором - но учтите, что сортировка становится проблемой здесь ... Dictionary<,> не гарантирует какой-либо конкретный порядок; два других порядка по клавишам, а не по порядку вставки.

Обратите внимание, что словарь не очень хорошо работает с привязкой данных. Может быть предпочтительнее создать что-то вроде Collection<T>, но инкапсулирует a Dictionary<,> для поиска. Конечно, все зависит от сценария.

Более подробную информацию о производительности и различиях между SortedList<,> и т. Д. Можно найти здесь .

1 голос
/ 09 ноября 2008

Я был бы более склонен использовать пользовательский класс, поддерживаемый словарем , чем DataTable. Предположительно это будет построено поверх слоя доступа к данным, который может использовать LINQ или DataTables и т. Д. Для доступа к реляционным данным, но если объект доступен на пользовательской карте, вам по крайней мере не придется восстанавливать его из реляционного данные.

...