迭代器应用于HashMap

时间:2016-12-17 18:05:35

标签: java dictionary hashmap iterator

所以我倾向于仔细查看开源代码,在很多代码中我看到类似的东西

HashMap<Player, Set<Integer>> tracker = new WeakHashMap<>();
public void Example() {
Iterator i = tracker;
i.SomeMethodTheMapCanDo;
}

但是,当我像这样执行代码时,我总是遇到编译器错误,但我仍然继续看到它,并且它有效。 这只是JDK / IDE给出了错误的错误,还是旧Javas的事情。

1 个答案:

答案 0 :(得分:1)

这是你的问题:

Iterator i = tracker;

Map没有实现Iterator。

如果你想从Map中获取Iterator,首先你需要决定是否需要keySet(),entrySet()或values()迭代器。

例如:

    Iterator<? extends Map.Entry<?, ?>> i = tracker.entrySet().iterator();
    i.forEachRemaining(entry -> {
        System.out.format("Key: %s, Value: %s%n",
                entry.getKey(), entry.getValue());
    });