Подтвердить что ты не робот

LinkedHashMap в .NET

Интересно, существует ли в .NET эквивалент java.util.LinkedHashMap? (т.е. элементы (re) упорядочены автоматически, если я обращаюсь к элементу. (boolean accessOrder)).

4b9b3361

Ответ 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.

Если у вас уже есть код, как и у меня, это может быть удобно