首页 新闻 会员 周边 捐助

C#重复取值问题求助

0
[已解决问题] 解决于 2016-09-09 08:22

问个比较弱智的问题,以下两种集合哪种读取速度最快?最快的取值方式?

//a
var dic = new Dictionary<Tuple<int, int>,string>();
            for (int i = 1; i < 9; i++)
                for (int j = 1; j < 9; j++)
                    dic.Add(new Tuple<int,int>(i, j), i + "aa" + j);

//b
var dic = new Dictionary<KeyValuePair<int, int>,string>();
            for (int i = 1; i < 9; i++)
                for (int j = 1; j < 9; j++)
                    dic.Add(new KeyValuePair<int,int>(i, j), i + "aa" + j);
梦天涯的主页 梦天涯 | 初学一级 | 园豆:103
提问于:2016-09-07 09:46
< >
分享
最佳答案
0

这两种不管怎么比都差不多

如果单考虑存的话肯定是普通数组最快了,单考虑取(by key)的话hash查找性能比较快了。

如果你要同时存和取那么就要掂量下,不要集中于这个点上,最好看下你后续的计算到底是什么样的。

奖励园豆:5
Daniel Cai | 专家六级 |园豆:10424 | 2016-09-07 10:46
其他回答(2)
0

这种问题,自己试试,但可能没多大意义,尤其是你的数量只有9个

顾晓北 | 园豆:10898 (专家六级) | 2016-09-07 09:52

这只是示例代码,实际数据有30多万条,我之前用Dictionary<KeyValuePair<int, int>,string>()反复存取值参与运算需要4-5个小时,搞不定才来求助有没有其它快速方法,谢谢

支持(0) 反对(0) 梦天涯 | 园豆:103 (初学一级) | 2016-09-07 10:04
0

试试:

foreach (var key in dic.Keys)
{
    Console.WriteLine(dic[key]);
}
dudu | 园豆:30778 (高人七级) | 2016-09-07 10:44

我这里Key是KeyValuePair<int, int>的,我一直用dic[new KeyValuePair<int, int>(key, value)]提取,请问下有比较高效的方法没,求指教,谢谢

支持(0) 反对(0) 梦天涯 | 园豆:103 (初学一级) | 2016-09-07 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册