HashMap Iterator / ForEach循环

时间:2013-11-07 22:29:41

标签: foreach iterator hashmap return main

我对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方法?我觉得我走错了方向。

谢谢你们!

1 个答案:

答案 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。