概要: 私の数学プログラムには、反復する項目の巨大なコレクションがあります。これは主に、キーと値のペアに似た、アイテムと他のアイテムへのポインター((int)item、(int) ポインター) で構成されます。ただし、各アイテムには、次のような他のいくつかの属性があります。
(アイテム, ポインタ),(属性, 属性, 属性, ...)
アイテム、ポインター、および属性が頻繁に追加されます。
このサイトや他のサイトを検索すると、プログラムにどのコレクションを使用するかについて、ますますわからなくなりました。
現時点では、vcskicks.com にあるDictionaryソリューションが最適なようです。
Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary =
new Dictionary<Dictionary<int,int>,Dictionary<int,int> nestedDictionary();
または平易な言葉で:
Dictionary<Dictionary<item, pointer>,
Dictionary<attribute,attribute, ...> nestedDictionary =
Dictionary<Dictionary<item, pointer>,
Dictionary<attribute,attribute, ...>();
属性の数は事前定義されておらず、長さが異なることに注意してください。また、現時点では、パフォーマンスのオーバーヘッドのため、オブジェクトを使用することに消極的です。
重複するアイテムが存在するため、ハッシュセットは適合しないようですが、属性は異なります。または、ハッシュセットに重複するアイテムがあっても、ハッシュキーが重複していない可能性はありますか? 若干の混乱があるようです。
一部によると、次のハッシュセットは計算されません。
11011, 0001
11011, 0011
他の人によると、それは異なるハッシュキーを持つためです。それは私を困惑させます。
私の質問:
あいまいになるリスクがあります: 使用するのに最適なコレクションの種類は何ですか? 必要に応じてストーリーに追加していきます。
編集:
巨大な手段: 潜在的に数百万のアイテム。すべてのアイテムにはポインタと属性があります。 一般的な使用法は、特定のアイテムを検索し、ポインターを取得し、ポインターがなくなるまで次のポインターのアイテムを取得することです。同時に、各アイテムのすべての属性が収集されます。追加は定期的に行われ、たまに削除されます。 ポインター: ポインターは、参照するアイテムのインデックスです。2 つのアイテムがあり、最初のアイテムが 2 番目のアイテムにリンクされている場合、最初のアイテムは 2 番目のアイテムのインデックスをポインターとして持ちます。 最高は、メモリ使用量と速度で定義されます。最後に、見つかったすべてのアイテムが互いに比較されます。 例:
[Item , pointer] [attribute, attribute, ...]
[11011, 1001] [ 1101, 1111 ]
[10001, 1000] [ 1110, 0101 ]
[11111, 0010] [ 1111, 1110 ]
[11011, 0001] [ 0010, 1010 ]
ありがとう