计算文件中重复的单词

时间:2010-10-15 13:01:25

标签: java string data-structures hashmap

目标:查找文件中所有单词的计数。文件包含1000多个单词

我的方法:使用HashMap<String,Integer>()来存储和计算每个单词在文件中出现的次数。

问题: HashMap()是最好的方式还是最好使用二叉树来确保更快的查找,因为文件中有大量的单词?

或者有更好的方法吗?

HashMap会导致大量内存开销,这是不可取的。

5 个答案:

答案 0 :(得分:5)

1000 - 10000字非常小。

Hashmap没问题。

答案 1 :(得分:5)

所以你在寻找不同的词语?

我能想到的最有效的结构是Trie

这是一个开源实现:Google Code patricia-trie

虽然我倾向于同意Mitch Wheat - 听起来HashMap应该可以正常工作(最好避免过早优化......所以你应该使用HashMap,直到你发现它是一个瓶颈)

答案 2 :(得分:1)

我建议在Perl / PHP中执行这样的任务。使用机枪杀死苍蝇非常困难。

答案 3 :(得分:0)

HashMap非常完美。你需要存储

  • 遇到的每个单词的副本
  • 每个
  • 的计数

HashMap确实不会存储更多内容!

答案 4 :(得分:0)

  1. 假设琴弦不是很长,迈克尔建议的“Trie”方法会很好。 Trie中的节点可以存储字符以及以该字符结尾的字符串的“计数”。这应该大大降低存储要求(再次假设字符串均匀分布和重叠)

  2. 假设在调用期间不会持续计数,在使用HashMap时,让Map来自Integer =&gt;整数 - 其中“key”是字符串的哈希码并且计算值。这应该是一个有效的解决方案 - 快速查找和减少内存占用。