这是一个算法问题。
我有Dictionary<object,Queue<object>>
。每个队列都包含一个或多个元素。我想从字典中删除只有一个元素的所有队列。最快的方法是什么?
伪代码:foreach(item in dict) if(item.Length==1) dict.Remove(item);
在循环中很容易做到(当然不是 foreach),但我想知道哪种方法在这里最快。
为什么我想要它:我使用该字典在大量对象中查找重复元素。字典中的键是对象的散列,值是找到具有相同散列的所有对象的队列。由于我只想要重复项,因此我需要删除关联队列中只有一个对象的所有项目。
更新:
重要的是要知道,在常规情况下,一大组对象中只有几个重复项。我们假设 1% 或更少。因此,保留字典原样并从 scatch 创建一个新的字典可能会更快,只使用第一个字典中的选定元素......然后完全删除第一个字典。我认为这取决于特定算法中使用的计算 Dictionary 类方法的复杂性。
我真的很想在理论上看到这个问题,因为作为一名老师,我想和学生讨论这个问题。我自己没有提供任何具体的解决方案,因为我认为这很容易做到。问题是哪种方法最好、最快。