如何实现以下哈希

时间:2012-11-16 03:09:26

标签: java algorithm hash hashtable

我正在尝试编写一个使用散列的Java程序来解决以下问题。给定自然语言文本,生成具有文本中每个单词出现次数的不同单词列表。在程序中插入适当的计数器,以比较散列的经验效率和相应的理论结果。

我理解散列和散列表的基本原理,但我不知道如何将它实现到计算机程序中。我的教科书没有给出任何例子,我的教授从未在课堂上讨论任何具体的例子。

我相信程序应该首先从文件中扫描文本,但我不知道在那之后去哪里。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

以下是我的解释,你的任务是什么。

您可以简单地将文件拆分为单词并将其插入HashMap<String,Integer>(或带有哈希表实现的地图)。您还应该对插入,随机检索进行计时,甚至可以在地图上进行成员资格测试。

然后,您将对不同的文件(不同大小)重复相同的操作,并验证所花费的时间是否与理论结果相符。

答案 1 :(得分:0)

听起来你只需要研究哈希。散列通常采用一系列值并将它们映射到较小的范围。所以一个简单的哈希函数可能是:

 public int hash(int value)
 {
   assert value >= 0 && value < 1000;
   return value % 10;
 }

所以我的哈希函数从范围(0到999)中取数字并将它们映射到(0到9)。良好的散列函数会将值均匀分布到结果范围内。

您的目标是将每个单词映射到哈希表中的某个索引,这不会像我的示例那样直截了当。您将不得不对散列字符串进行一些研究。

祝你好运!