繁体   English   中英

Dictionary.ContainsKey()是否比FirstOrDefault()好?

[英]Is Dictionary.ContainsKey() any better than FirstOrDefault()?

我知道,没有任何一件事能表现出色。 但是我现在需要这方面的知识。

我有一个词典和一个字符串[]。 字典中的布尔值仅用于填充空格。 让我们想象一下,作为一个库存系统只是为了使事情变得简单。

在此清单中,我想检查是否已经获得一件物品。 所以我要做的是:

if (dic.ContainsKey(item_id)) // That could be a TryGetValue() as well.
{
    // Do some logic.
}

但是拥有一个数组会更好吗?

if (array.FirstOrDefault(a => a = item_id))
{
    // Do magic.
}

我的意思是,在特定情况下哪种效果更好?

我知道,这是一个愚蠢的问题,但是当您可以进行超过一百万(对于xD的DBZ粉丝来说,可以超过九千)检查时,事情会变得很繁重,尤其是对于移动设备,VR和性能类似的其他设备。

另外,我只希望我的用户对我的广告资源有最好的体验(又称无滞后),所以我经常考虑这样的事情。

这里有两个权衡的时空。

与数组相比,字典是一种相对较重的结构。

如果基本上不依赖于条目O(1)的数量,则在Dictionary(或HashSet)中的查找时间,而对于数组,则线性增加O(N)。

因此,在一定数量的项目中,字典(或HashSet)开始变得相当快。 一百万肯定高于这个门槛。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM