2009-01-28 64 views
14

我想知道.NET中是否有与java.util.LinkedHashMap相对应的对象? (也就是说,如果我访问一个元素,元素会自动排序(boolean accessOrder))。.NET中的LinkedHashMap

+0

我想明白其中仅仅取得集合中的元素被视为修改,从而导致重新排序逻辑。 – Cerebrus 2009-01-28 09:07:23

+0

我对这个课程并不熟悉,但也许可以更快地访问大多数访问过的元素? – 2009-01-28 09:13:44

+1

您可以在http://java.sun.com/javase/6/docs/api/java/util/LinkedHashMap.html上查看有关LinkedHashMap的详细信息。它解释了使用情况以及何时有用(LRU缓存)。 – 2009-01-28 09:16:55

回答

5

有一点谷歌搜索似乎表明,没有内置的C#等效LinkedHashMap,但有一些第三方选项可用。

9

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

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

我会很高兴,如果你想实现它今晚或明天 - (!完全测试的集合是一个耗时的业务),虽然可能不是完全的单元测试等

2

这里是一个C#实现我发现于forum

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

@Jon:如果你能快速实施,我也会很感激。我想像一个LinkedList顶部的字典将是最好的,但I hear有LinkedList的垃圾收集问题,减慢了事情的速度。

1

我使用System.Collections.Specialized.OrderedDictionary作为LinkedHashMap的替代品。它为我工作。有什么我丢失OrderedDictionary(是的,它不是通用的,但它可以与.Net 2或更新)?

0

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

如果你已经在你的代码,因为我有,它可以很方便