这是一个算法问题。我有Dictionary<object,Queue<object>>
。每个队列都包含一个或多个元素。我想删除字典中只有一个元素的所有队列。什么是最快的方法呢?改变字典<K,V>最快的方法是什么?
伪代码:foreach(item in dict) if(item.Length==1) dict.Remove(item);
这是很容易做到在一个循环(没有的foreach,当然),但我想知道哪种方法在这里是一个最快的。
为什么我想要它:我使用该字典在一大组对象中查找重复的元素。键入字典是对象的一种散列,值是用相同散列找到的所有对象的队列。由于我只需要重复,我需要删除所有项目只有在关联队列中的单个对象。
更新:
可能知道,在常规情况下,也有只是在一个大组对象的几个副本很重要的。我们假设1%或更少。因此,离开词典可能会更快,并通过从第一个单元中选择的元素从scatch创建一个新的单词...然后完整地处理第一个词典。我认为这取决于在特定算法中使用的计算字典类的方法的共同性。
我真的很想在理论层面看到这个问题,因为作为一名老师,我想与学生讨论这个问题。我自己并没有提供任何具体的解决方案,因为我认为这很容易做到。问题是哪种方法最好,最快。
说实话,感觉就像一些不成熟的优化......有多少东西是你处理和你确定你需要使它更快?你在正常循环中经历了什么样的时间? – Ian