1. ホーム
  2. c#

[解決済み】Lookup()とDictionary(Of list())の違いについて)

2022-04-14 01:07:18

質問

どのデータ構造が最も効率的で、いつ、どこで、どのデータ構造を使えばいいのか、頭の中を整理しているところなんです。

さて、私が単に構造を十分に理解していないだけかもしれませんが、どのようにして ILookup(of key, ...) とは異なり Dictionary(of key, list(of ...)) ?

また、どこで ILookup また、プログラム速度/メモリ/データアクセスなどの面で、どこが効率的なのでしょうか?

どのように解決するのですか?

2つの大きな違い

  • Lookup はイミュータブルです。やったー :) (少なくとも、私は、具体的な Lookup クラスはイミュータブルであり ILookup インタフェースは変異するメンバを提供しません。そこで 可能性 もちろん、他のミュータブルな実装もあります)。
  • 存在しないキーをルックアップした場合、ルックアップしたキーは KeyNotFoundException . (したがって TryGetValue ということです(AFAICR)。

この2つは効率的には同等と思われます。 Dictionary<TKey, GroupingImplementation<TValue>> 例えば、裏側で 要件に応じて、どちらかを選択してください。個人的には、通常、ルックアップの方が Dictionary<TKey, List<TValue>> その主な理由は、上記の最初の2点です。

なお、実装の詳細として、具体的な実装は IGrouping<,> を実装しており、値に使用されます。 IList<TValue> と一緒に使うのが効率的ということです。 Count() , ElementAt() などです。