如何在HashMap内部将entrySet链接到表



根据HashMap doc on entrySet():

public Set> entry ()

在API级别1中添加这张地图。每个映射都是Map.Entry的一个实例。与集合相同在此地图的支持下,一个地图的变化将反映在另一个地图上。

返回映射的集合。

但是当我检查HashMap代码时,我无法理解entrySet字段如何链接到table或任何其他对象。
我试图了解entrySet是如何更新时,put()方法被调用。

让我们看一下EntrySet的实现:

965 privatefinalclass EntrySet extends AbstractSet<K,V>> {
966 public iterator <K,V>> iterator() {
967
968}
969 publicboolean contains(Object o) {
970 if (!)(0 instanceof Map.Entry))
971 returnfalse;
972 Map.Entry<K,V> e = (Map.Entry<K,V>) 0;
973 Entry<K,V> candidate = getEntry(e.p getkey ());
974 return candidate != null &&
975}
976 publicboolean remove(Object o) {
977 return removeMapping(o) != null;
978}
979 publicint size() {
980}
982 publicvoid clear() {
984}
985}


985}


985}


985}


983 HashMap.this.clear() {
983 HashMap.this

注意,它是一个内部类,可以隐式访问封闭HashMap实例的所有状态和所有实例方法。它通过调用封闭HashMap的适当方法来实现它的方法。

EntrySetHashMap中的嵌套类,参见源代码。

最新更新