我对HashMaps的一个简单问题。基本上我有两个字符串。两者在每个字符串中都有一定数量的相似单词。以下HashMap方法允许我计算每个句子中某个单词出现的次数。我的问题是在main方法中返回此方法。 HashMap方法如下:
public HashMap<String, Integer> getWordCounts(){
HashMap<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < this.getWordArray().length; i++){
String key = getWordArray()[i];
Integer count = map.get(key);
if(count == null){
count = 1;
}else{
count++;
}
map.put(key, count);
}
return map;
}
这是我到目前为止我的返回方法。
HashMap<String, Integer> hashMapAdd = map.getWordCounts();
for(HashMap.Entry <String, Integer> entry : plato.entrySet()){
System.out.println(entry.getKey()+ "," + entry.getValue());
}
我是否以正确的方式使用return方法?我觉得我走错了方向。
谢谢你们!
答案 0 :(得分:0)
除了功能的逻辑(我还没有分析它),你问的是什么......
是的,这个方法在Java中构造和返回HashMap是完全正常的,当我在使用C ++ 2年后开始使用java时,我有时也感到困惑,但是我理解返回本地对象是完全没问题的。在java中,因为JVM的垃圾收集器处理使用这种技术可能在C ++中发生的问题。
现在,你有了hashmap,迭代并打印hashmap只需使用这样的循环:
for(String key:hashMapAdd.keySet())
System.out.println(key+ "," + hashMapAdd.get(key));
至少对我而言,这不那么令人困惑和容易。 有关HashMap的详细信息,请访问: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
P.S:我假设您的代码正在编译(您没有抱怨任何编译错误),因为行map.getWordCounts();看起来很可疑,我假设这个方法在某个类中命名为map。但是在这种情况下你将无法使用Name map创建HashMap,你需要看看为什么你在这行代码中使用map。