目标:查找文件中所有单词的计数。文件包含1000多个单词
我的方法:使用HashMap<String,Integer>()
来存储和计算每个单词在文件中出现的次数。
问题:
HashMap()
是最好的方式还是最好使用二叉树来确保更快的查找,因为文件中有大量的单词?
或者有更好的方法吗?
HashMap会导致大量内存开销,这是不可取的。
答案 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)
假设琴弦不是很长,迈克尔建议的“Trie”方法会很好。 Trie中的节点可以存储字符以及以该字符结尾的字符串的“计数”。这应该大大降低存储要求(再次假设字符串均匀分布和重叠)
假设在调用期间不会持续计数,在使用HashMap时,让Map来自Integer =&gt;整数 - 其中“key”是字符串的哈希码并且计算值。这应该是一个有效的解决方案 - 快速查找和减少内存占用。