5 ответов:
Немного Гугля, кажется, показывает, что нет встроенного эквивалента в C# для LinkedHashMap, но есть некоторые доступные сторонние опции.
Просто чтобы немного прояснить для читателей: LinkedHashMap ведет себя так только при сборке с одной конкретной перегрузкой конструктора. Обычно элементы поддерживаются в порядке вставки. (Мне это кажется немного странным, но не важно.)
Я не верю, что есть такой класс В .NET. было бы не слишком сложно построить его, используя связанный список элементов и словарь от ключа к узлу связанного списка. Доступ тогда будет состоять из извлечения узла связанного списка, перемещения его в начало и возвращает значение.
Я был бы рад реализовать его сегодня или завтра, если вы хотите - хотя, вероятно,не с полным блоком тестов и т. д. (Полное тестирование коллекции-это трудоемкий бизнес!)
Вот реализация C#, которую я нашел на форуме :
Он не документирован, но имеет некоторые тесты. Однако она не является общей. По крайней мере, это то, что я думаю.
@Jon: я был бы очень признателен, если бы вы могли сделать быструю реализацию. Я думал, что словарь поверх LinkedList был бы лучшим, но я слышал есть проблемы с сборкой мусора в LinkedList, которые замедляют процесс.
Я использовал систему.Коллекции.Специализированный.OrderedDictionary как замена LinkedHashMap. Это сработало для меня. Есть ли что-то, чего мне не хватает в OrderedDictionary (да, это не универсальный, но он доступен с .Net 2 или новее)?
У Nhibernate есть NHibernate.Утиль.Реализация LinkedHashMap.
Если он уже есть в вашем коде, как у меня, это может быть удобно
Comments