2010-10-15 109 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中执行这样的任务。用机枪杀死苍蝇非常困难。

相关问题