這是一個算法問題。我有Dictionary<object,Queue<object>>
。每個隊列都包含一個或多個元素。我想刪除字典中只有一個元素的所有隊列。什麼是最快的方法呢?改變字典<K,V>最快的方法是什麼?
僞代碼:foreach(item in dict) if(item.Length==1) dict.Remove(item);
這是很容易做到在一個循環(沒有的foreach,當然),但我想知道哪種方法在這裏是一個最快的。
爲什麼我想要它:我使用該字典在一大組對象中查找重複的元素。鍵入字典是對象的一種散列,值是用相同散列找到的所有對象的隊列。由於我只需要重複,我需要刪除所有項目只有在關聯隊列中的單個對象。
更新:
可能知道,在常規情況下,也有隻是在一個大組對象的幾個副本很重要的。我們假設1%或更少。因此,離開詞典可能會更快,並通過從第一個單元中選擇的元素從scatch創建一個新的單詞...然後完整地處理第一個詞典。我認爲這取決於在特定算法中使用的計算字典類的方法的共同性。
我真的很想在理論層面看到這個問題,因爲作爲一名老師,我想與學生討論這個問題。我自己並沒有提供任何具體的解決方案,因爲我認爲這很容易做到。問題是哪種方法最好,最快。
說實話,感覺就像一些不成熟的優化......有多少東西是你處理和你確定你需要使它更快?你在正常循環中經歷了什麼樣的時間? – Ian