我正在做一个任务,我必须在Java中构建一个语言检测器。基本上它所做的是,它以字符串的形式获取一堆数据,并为每种语言创建一个HashMap。这个HashMap保存了一个特定的n-gram被列出的频率。
之前我已经实现了一个简单的HashMap类,方法如下:
- 具有键(String)和值()的条目类
- 加法
- 获取方法
- hashCode
- 探针法
**这里是我的HashMap类的构造函数:**N = length,basis = 31。
public HashMap(int N, int basis) {
table = (Entry[]) Array.newInstance(Entry[].class.getComponentType(), N);
this.basis = basis;
}
现在我需要实现以下方法:
public void learnLanguage(String language, String text)
我会先检查这个语言是否在我的列表1中列出,如果没有,我会添加它。然后,我将为这个特定的语言添加一个HashMap,在那里我存储n-Grams。(从那里开始,我认为它很简单,只需要计算一个特定的n-Gram在String“text”中的频率,并将其保存在HashMap中)
但我正在努力创建HashMap。我附上了一个图像它应该是什么样子。
how it should look like
希望有人能帮帮我!
我尝试的是:
尝试在HashMap中创建HashMap,但没有成功:
HashMap<String, HashMap<Integer>> languageMap;
有一些错误,我不知道如何摆脱。也不认为这是最好的选择。
1条答案
按热度按时间f0ofjuux1#
Soo Baically必须做的是在HashMap中创建HashMap。
我们有一个HashMap(表1),字符串(语言)作为键,另一个HashMap(表2)作为值。因此,每个键,即语言有自己的HashMap,其中存储nGrams以及它们在语言中的使用频率。
我需要做的是实现一个我创建的HashMap示例(为了使用我自己的哈希/探测函数和其他实现的方法)。但是因为这个名字与JDK中的HashMap类相同,所以正如@bohemian指出的那样,它会引起混淆。
表1的正确初始化是:
我忘了提,我们的HashMap中的键总是一个String,但是值只能是我们初始化的任何值。
以下是我们学校任务的完整代码:
我希望这能澄清我的问题,使它更容易理解。我只是不能弄清楚我的HashMap的正确初始化。
对不起,非结构化的代码,我希望这不是一个痛苦的人有兴趣阅读它。