关于:我的数学程序将有大量的项目进行迭代。它主要由一个项目和一个指向另一个项目的指针((int)项目,(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 项,并且第一项链接到第二项,则第一项将具有第二项的索引作为指针。 最佳定义为内存使用率和速度。最后,所有找到的项目将相互比较。 例子:
[Item , pointer] [attribute, attribute, ...]
[11011, 1001] [ 1101, 1111 ]
[10001, 1000] [ 1110, 0101 ]
[11111, 0010] [ 1111, 1110 ]
[11011, 0001] [ 0010, 1010 ]
谢谢