目標:查找文件中所有單詞的計數。文件包含1000多個單詞計算文件中的重複單詞
我的方法:使用HashMap<String,Integer>()
來存儲和計算每個單詞在文件中出現的次數。
問題: HashMap()
會是最好的方法,還是使用二叉樹來保證更快的查找效果會更好?因爲文件中有大量的單詞?
或者是否有更好的方法來做到這一點?
HashMap會導致很多不希望的內存開銷。
目標:查找文件中所有單詞的計數。文件包含1000多個單詞計算文件中的重複單詞
我的方法:使用HashMap<String,Integer>()
來存儲和計算每個單詞在文件中出現的次數。
問題: HashMap()
會是最好的方法,還是使用二叉樹來保證更快的查找效果會更好?因爲文件中有大量的單詞?
或者是否有更好的方法來做到這一點?
HashMap會導致很多不希望的內存開銷。
所以你正在尋找不同的單詞?
最有效的結構,我能想到的是Trie
這裏是一個開源實現:Google Code patricia-trie
雖然我傾向於米奇小麥同意 - 這聽起來像一個HashMap應該能正常運行(這是總是最好避免過早的優化...所以你應該使用HashMap,直到你已經證明,這是一個瓶頸)
1000 - 10000字很小。
一個HashMap會沒事的。
HashMap是完美的。您需要存儲
一個HashMap真的不會存儲遠不止這些!
假設字符串不是瘋長,一個「特里」的方法邁克爾建議會很好。 Trie中的節點可以存儲字符和以該字符結尾的字符串的「數量」。這應該大大減少存儲需求(再次假設字符串是均勻分佈的和重疊的)
假設計數不能跨調用被保留,同時使用一個HashMap,讓地圖是從整數= >整數 - 「密鑰」是字符串的哈希碼,值是計數值。這應該是一個有效的解決方案 - 快速查找並減少內存佔用量。
我會推薦在Perl/PHP中執行這樣的任務。用機槍殺死蒼蠅非常困難。
讓我們爲此創建一個代碼高爾夫球吧) – moala 2010-10-15 13:10:18