15


3

.NETのLinkedHashMap

5 Answer


10


読者のために少し明確にするために:LinkedHashMapは、1つの特定のコンストラクタオーバーロードで構築されたときにそのように振る舞うだけです。 通常、要素は挿入順に維持されます。 (これは私には少し変に感じますが、気にしないでください)。

私は.NETにそのようなクラスがあるとは思わない。 要素のリンクリストとキーからリンクリストノードへの辞書を使用して、要素を構築することはそれほど難しくありません。 アクセスは、リンクリストノードを取得し、それを先頭に移動して値を返すことで構成されます。

私はあなたが望むなら今夜または明日それを実装するのが嬉しいです - おそらくフルユニットテストなどではそうではありませんが (コレクションを完全にテストすることは時間のかかる仕事です!)


5


Googlingのちょっとしたことは、LinkedHashMapに相当するC#に相当するものが組み込まれていないことを示しているようですが、利用可能なサードパーティのオプションがいくつかあります。


2


これは私が forumで見つけたC#の実装です。

それは文書化されていませんが、いくつかのテストがあります。 しかし、それは一般的ではありません。 少なくともそれは私が推測することです。

@ジョン:あなたが迅速な実装を行うことができれば私もそれをいただければ幸いです。 LinkedListの上にあるDictionaryが最善だと思いましたが、http://en.csharp-online.net/CSharp_Generics_Recipes%E2%80%94Implementing_a_Linked_List [聞いたところ] LinkedListには処理速度が遅くなるという問題があります。


1


LinkedHashMapの代わりにSystem.Collections.Specialized.OrderedDictionaryを使用しました。 それは私のために働きました。 OrderedDictionaryについて見逃していることはありますか(はい、それは汎用ではありませんが、.Net 2以降で利用可能です)。


0


NhibernateはNHibernate.Util.LinkedHashMapを実装しています。

私が持っていたように、あなたがすでにあなたのコードにそれを持っているならば、それは便利であることができます