gpt4 book ai didi

c# - 通过Dictionary KeyCollection保持访问速度

转载 作者:行者123 更新时间:2023-12-02 00:47:56 26 4
gpt4 key购买 nike

我有一个类,仅使用 Dictionary<long, object> 的 keyCollection ,我只想将 key 传递给其他类。

我知道字典里有一个理论O(1)按索引访问(如 HashTable ),但如果我将 keyCollection 转换为列表,访问将更改为 O(n) .

我怎样才能将 keyCollection 传递给我的类来维护 O(1)访问?

编辑:我正在使用 .NET 2.0。

提前致谢。

最佳答案

在评论中,您提到您的意图是 .Contains() 。在这种情况下,您要查找的是 HashSet<T> ,它正是这样做的 - 它只保存键(没有值),并提供快速 Contains检查。所以;为您Dictionary<long,object>你可以这样做:

var set = new HashSet<long>(dictionary.Keys);

然后把它传过去。为了方便起见,HashSet<T>实现ICollection<T> (如果您想将其范围限制为接口(interface),而不是具体类型) - 这有一个 Contains也是。

实际上,使用起来可能更高效(也适用于.NET 2.0):

ICollection<long> = dictionary.Keys;

然后通过;执行Contains(key)这是 O(1),因为它是通过以下方式实现的:

bool ICollection<TKey>.Contains(TKey item)
{
return this.dictionary.ContainsKey(item);
}

关于c# - 通过Dictionary KeyCollection保持访问速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com