0

只是一个关于 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;
}

到目前为止,这就是我的 return 方法。

        HashMap<String, Integer> hashMapAdd = map.getWordCounts();
    for(HashMap.Entry <String, Integer> entry : plato.entrySet()){
        System.out.println(entry.getKey()+ "," + entry.getValue());
    }

我的返回方法是否正确?我觉得我走错了方向。

多谢你们!

4

1 回答 1

0

除了函数的逻辑(我还没有分析过),关于你问的......
是的,当我在使用 C++ 2 后开始使用 java 时,这种方法可以在 Java 中构造和返回这样的 HashMap多年来,我有时也会感到困惑,但我明白在 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

PS:我假设您的代码正在编译(您没有抱怨任何编译错误),因为行 map.getWordCounts(); 看起来很可疑,我假设这个方法在某个名为 map 的类中。但在这种情况下,您将无法使用 Name map 制作 HashMap,您需要查看为什么在这行代码中使用 map。

于 2015-10-09T09:56:37.717 回答