繁体   English   中英

计算文件中重复的单词

[英]Counting repeated words in a file

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

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

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

或者有更好的方法吗?

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

1000 - 10000字是非常小的。

Hashmap会很好。

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

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

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

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

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

HashMap非常完美。 你需要存储

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

HashMap真的不会存储更多!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM