所以我倾向于仔细查看开源代码,在很多代码中我看到类似的东西
HashMap<Player, Set<Integer>> tracker = new WeakHashMap<>();
public void Example() {
Iterator i = tracker;
i.SomeMethodTheMapCanDo;
}
但是,当我像这样执行代码时,我总是遇到编译器错误,但我仍然继续看到它,并且它有效。 这只是JDK / IDE给出了错误的错误,还是旧Javas的事情。
答案 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());
});