Какова лучшая структура для реализации Identity Map?
Хотя DataTable - это проблема с памятью, разве DataTable не будет лучшим выбором для реализации и IdentityMap, если набор объектов очень большой, так как время поиска равно O(1)?
Обновить
Если я решу использовать IDictionary, жертвую ли я скоростью при извлечении своих объектов?
2 ответа
Любой из Dictionary<,>
, SortedList<,>
или же SortedDictionary<,>
было бы очевидным выбором - но обратите внимание, что сортировка становится проблемой здесь... Dictionary<,>
не гарантирует какой-либо конкретный заказ; два других порядка по ключам, а не порядок вставки.
Также обратите внимание, что словарь не очень хорошо работает с привязкой данных. Может быть предпочтительнее создать что-то вроде Collection<T>
, но инкапсулировать Dictionary<,>
для поиска. Все зависит от сценария, конечно.
Больше информации о производительности и различиях между SortedList<,>
и т.д. можно найти здесь.
Я был бы более склонен использовать собственный класс, поддерживаемый Dictionary