目标:查找文件中所有单词的计数。文件包含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