Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算文件中重复的单词_Java_String_Data Structures_Hashmap - Fatal编程技术网

Java 计算文件中重复的单词

Java 计算文件中重复的单词,java,string,data-structures,hashmap,Java,String,Data Structures,Hashmap,目标:查找文件中所有单词的计数。文件包含1000多个字 我的方法是:使用HashMap()存储并计算每个单词在文件中出现的次数 问题: HashMap()是最好的方法,还是最好使用二叉树来确保更快的查找,因为文件中有大量的字 还是有更好的方法 HashMap将导致大量不需要的内存开销。1000-10000个字非常小 Hashmap很好。Hashmap很完美。你需要储存 遇到的每个单词的副本 每一个的计数 HashMap真的不会存储更多 那么你在寻找不同的词 我能想到的最有效的结构是 下面是一

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

我的方法是:使用
HashMap()
存储并计算每个单词在文件中出现的次数

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

还是有更好的方法


HashMap将导致大量不需要的内存开销。

1000-10000个字非常小


Hashmap很好。

Hashmap很完美。你需要储存

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

HashMap真的不会存储更多

那么你在寻找不同的词

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

下面是一个开源实现:

虽然我倾向于同意Mitch Wheat的观点,但听起来HashMap应该可以很好地工作(最好避免过早的优化…所以你应该使用HashMap,直到你证明它是一个瓶颈)

  • 假设字符串不是很长,那么Michael建议的“Trie”方法会很好。Trie中的节点可以存储字符以及以该字符结尾的字符串的“计数”。这将大大减少存储需求(再次假设字符串均匀分布且重叠)

  • 假设在使用HashMap时,不在调用之间持久化计数,则让映射为from Integer=>Integer,其中“key”是字符串的hashcode,并为计数赋值。这应该是一个有效的解决方案-具有快速查找和减少内存足迹


  • 我建议用Perl/PHP完成这样的任务。用机关枪杀苍蝇很难

    让我们为此创建一个代码;)