【问题标题】:HashMap Iterator/ForEach loopHashMap 迭代器/ForEach 循环
【发布时间】:2013-11-19 19:29:00
【问题描述】:

我收到了一个关于 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());
    }

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

谢谢大家!

【问题讨论】:

  • 你能澄清你在问什么吗?有什么特别不对劲的地方吗?
  • 是的,我不确定如何从 HashMap 中打印出结果。这个 hashmap 在另一个类中,我想在一个单独的主类中打印结果。
  • map 变量是什么?它是哪种类型?哪个类包含getWordCounts 方法?

标签: foreach iterator hashmap return main


【解决方案1】:

除了函数的逻辑(我没有分析过),关于你问的...
是的,这种方法在 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2014-10-31
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多