.NET中的LinkedHashMap

时间:2009-01-28 08:58:39

标签: java .net .net-3.5 linkedhashmap

我想知道.NET中是否有java.util.LinkedHashMap的副本? (即,如果我访问元素,则会自动(重新)排序元素。(boolean accessOrder))。

6 个答案:

答案 0 :(得分:11)

为了向读者澄清一点:LinkedHashMap在使用一个特定的构造函数重载构建时只表现这种方式。通常,元素按插入顺序维护。 (这对我来说有点奇怪,但没关系。)

我不相信.NET中有这样的类。使用链接的元素列表和从键到链表节点的字典来构建一个并不太难。然后,访问将包括获取链接列表节点,将其移动到头部,然后返回值。

如果你愿意的话,我很乐意今晚或明天实施它 - 尽管可能没有全面的单元测试等。(全面测试一个集合是一项耗时的业务!)

答案 1 :(得分:5)

Googling的一些内容似乎表明LinkedHashMap没有内置的C#等价物,但是有一些第三方选项可用。

答案 2 :(得分:2)

这是我在forum上找到的C#实现:

它没有记录,但确实有一些测试。然而,它不是通用的。至少这是我猜的。

@Jon:如果你能快速实施,我也会很感激。我想象一个LinkedList顶部的Dictionary是最好的,但是I hear LinkedList会产生垃圾收集问题,这会减慢速度。

答案 3 :(得分:1)

我使用System.Collections.Specialized.OrderedDictionary作为LinkedHashMap的替代品。它对我有用。是否有任何关于OrderedDictionary的遗漏(是的,它不是通用的,但它可以与.Net 2或更新版本一起使用)?

答案 4 :(得分:0)

Nhibernate有一个NHibernate.Util.LinkedHashMap实现。

如果您已经在我的代码中使用了它,那么它可以很方便

答案 5 :(得分:0)

由于C#中仍然没有LinkedHashMap,并且我需要此功能,因此我已经在最新的网络核心(3.1)上实现了该功能。 https://github.com/idlerboris/LinkedHashMap/blob/master/CustomCollections/CustomCollections/LinkedHashMap.cs。它涵盖了基本测试,而且看起来不错,但是可以随时提出/报告问题。