【发布时间】:2020-07-29 04:03:51
【问题描述】:
我有一个问题,Map.Entry 如何在 Map 实现中使用,例如 HashMap。下面是HashMap在jdk8中实现的代码,
public interface Map<K, V> {
interface Entry<K, V> {
...
}
}
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {
static class Node<K,V> implements Map.Entry<K,V> {
public final K getKey() { return key; }
public final V getValue() { return value; }
}
transient Node<K,V>[] table;
}
我有 2 个问题。
-
根据javadoc,
Map.Entry是public static interface,如public static interface Map.Entry<K,V>。为什么上面的interface Entry<K, V>中缺少static? javadoc 是否仅指 Oracle jdk? -
关于
static关键字,我的理解是内部Map.Entry对象,table的元素类型,没有引用HashMap,因为Node是static类。table变量是static吗?如果table是static,那么所有HashMap类对象将共享相同的table;这听起来不对。不是每个HashMap对象都有不同的内存存储来托管它们的内容吗?
【问题讨论】:
-
1.所有接口都是静态的。 2.
table变量不是静态的,正如您自己的代码摘录所示。Map.Entry对象只需要它们的键和值引用,而不需要对HashMap的引用。你对这一点的推理不清楚。
标签: java interface static hashmap