gpt4 book ai didi

c# - 改变 Dictionary 最快的方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:39 24 4
gpt4 key购买 nike

这是一道算法题。

我有Dictionary<object,Queue<object>> .每个队列中包含一个或多个元素。我想从字典中删除所有只有一个元素的队列。最快的方法是什么?

伪代码:foreach(item in dict) if(item.Length==1) dict.Remove(item);

在循环中很容易做到这一点(当然不是 foreach),但我想知道哪种方法最快。

为什么我想要它:我使用该字典在大量对象中查找重复元素。字典中的键是对象的哈希,值是找到具有相同哈希的所有对象的队列。由于我只想要重复项,因此我需要删除关联队列中只有一个对象的所有项。

更新:

了解在常规情况下,大量对象中只有少数重复项可能很重要。让我们假设 1% 或更少。因此,保留 Dictionary 原样并使用第一个 Dictionary 中的选定元素从 scatch 创建一个新的可能会更快......然后完全删除第一个 Dictionary。我认为这取决于特定算法中使用的计算字典类方法的复杂性。

我真的很想在理论层面上看到这个问题,因为作为老师我想和学生讨论这个问题。我自己没有提供任何具体的解决方案,因为我认为这很容易做到。问题是哪种方法最好、最快。

最佳答案

var itemsWithOneEntry = dict.Where(x => x.Value.Count == 1)
.Select(x => x.Key)
.ToList();

foreach (var item in itemsWithOneEntry) {
dict.Remove(item));
}

关于c# - 改变 Dictionary<K,V> 最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13512777/

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