Интересно, существует ли в .NET эквивалент java.util.LinkedHashMap
? (т.е. элементы (re) упорядочены автоматически, если я обращаюсь к элементу. (boolean accessOrder)).
LinkedHashMap в .NET
Ответ 1
Похоже, что часть Googling показывает, что для LinkedHashMap нет встроенного эквивалента С#, но есть некоторые сторонние опции.
Ответ 2
Просто для того, чтобы немного разъяснить читателям: LinkedHashMap ведет себя именно так, когда создается с одной конкретной перегрузкой конструктора. Обычно элементы поддерживаются в порядке вставки. (Это немного странно для меня, но неважно).
Я не верю, что в .NET есть такой класс. Его было бы не слишком сложно построить, используя связанный список элементов и словарь из ключевого слова в связанный список node. Тогда Access будет состоять из набора связанного списка node, перемещения его в голову и возврата значения.
Я был бы счастлив реализовать его сегодня или завтра, если вы захотите, хотя, вероятно, не с полными модульными тестами и т.д. (Полностью тестирование коллекции - трудоемкий бизнес!)
Ответ 3
Здесь реализация С#, найденная мной на forum:
Он недокументирован, но имеет некоторые тесты. Однако он не является общим. По крайней мере, я думаю.
@Jon: Я был бы признателен за это, если бы вы могли сделать быструю реализацию. Я подумал, что лучше всего использовать словарь поверх LinkedList, но Я слышал, что есть проблемы с сборкой мусора с LinkedList, которые замедляют работу.
Ответ 4
Я использовал System.Collections.Specialized.OrderedDictionary как замену LinkedHashMap. Это сработало для меня. Есть ли что-то, что мне не хватает в OrderedDictionary (да, это не общий, но он доступен с .Net 2 или новее)?
Ответ 5
Nhibernate имеет реализацию NHibernate.Util.LinkedHashMap.
Если у вас уже есть код, как и у меня, это может быть удобно