2010-10-15 106 views
3

目標:查找文件中所有單詞的計數。文件包含1000多個單詞計算文件中的重複單詞

我的方法:使用HashMap<String,Integer>()來存儲和計算每個單詞在文件中出現的次數。

問題: HashMap()會是最好的方法,還是使用二叉樹來保證更快的查找效果會更好?因爲文件中有大量的單詞?

或者是否有更好的方法來做到這一點?

HashMap會導致很多不希望的內存開銷。

+1

讓我們爲此創建一個代碼高爾夫球吧) – moala 2010-10-15 13:10:18

回答

5

所以你正在尋找不同的單詞?

最有效的結構,我能想到的是Trie

這裏是一個開源實現:Google Code patricia-trie

雖然我傾向於米奇小麥同意 - 這聽起來像一個HashMap應該能正常運行(這是總是最好避免過早的優化...所以你應該使用HashMap,直到你已經證明,這是一個瓶頸)

+1

+1爲了將我擊敗到trie – Pops 2010-10-15 13:10:35

+0

感謝您的所有幫助!你們是最棒的! – JJunior 2010-10-15 13:20:33

5

1000 - 10000字很小。

一個HashMap會沒事的。

0

HashMap是完美的。您需要存儲

  • 每個字的副本中遇到
  • 計數每個

一個HashMap真的不會存儲遠不止這些!

0
  1. 假設字符串不是瘋長,一個「特里」的方法邁克爾建議會很好。 Trie中的節點可以存儲字符和以該字符結尾的字符串的「數量」。這應該大大減少存儲需求(再次假設字符串是均勻分佈的和重疊的)

  2. 假設計數不能跨調用被保留,同時使用一個HashMap,讓地圖是從整數= >整數 - 「密鑰」是字符串的哈希碼,值是計數值。這應該是一個有效的解決方案 - 快速查找並減少內存佔用量。

1

我會推薦在Perl/PHP中執行這樣的任務。用機槍殺死蒼蠅非常困難。

相關問題