map中的int size()是怎么实现的?[int size()是用来计算map中键值对的数量]
AbstractMap实现了map接口,但是对于map中的int size()方法使用了以下实现:
public int size() {
return entrySet().size();
}
调用了entrySet()来调用size()方法,但是entrySet()本身并没有对size()进行实现,而是依赖于Set的实现.
public abstract Set<Entry<K,V>> entrySet();
但是Set的实现类AbstractSet没有对size()进行实现而是继承了AbstractCollection去size()
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>{
}
但是AbstractCollection对size()的实现就一行:
public abstract int size();
到这里找不到size()的具体实现;
这个只是个抽象类,具体方法实现在子类上面。可以看HashMap的源码