用几张图捋完集合的继承实现关系

难得这几天都比较闲,所以有时间弄弄博客。刚好在忘了集合的那些继承关系,就顺便整理了一下,而我们平时常见的List,Set,Map,Queue等都有着对应的继承体系。这里只列举了所用的抽象类和常见的实现类,毕竟实现类真的列举起来就没完没了。

抽象类继承关系

如下图所示,List,Set和Queue类型的集合都是有着自己对应的AbstractList,AbstractSet和AbstractQueue基类,而这三个基类都继承自AbstractCollection

这里我们发现,说好的Map呢?别急,Map的继承体系在这

 那AbstractMap就是平时我们接触的那些Map的基类吗,对,这里一点质疑都不需要,就是这样的。Map和Collection是相对的两个集合体系

public abstract class AbstractMap<K,V> implements Map<K,V> {...}
public abstract class AbstractCollection<E> implements Collection<E> {...}

这里我们要问下,我们平时做面试题的时候会碰到跟HashMap比较的HashTable是什么?那在这里说明下,HashTable属于Map的体系,但是其基类并非AbstractMap,而是Dictionary

public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable {...}

好的,看完继承关系以后,我们可以继续看接口的。

接口继承关系

我们平时所说,这是个List,这是个Map,这个是Set在更多的时候是说其实现的是哪个体系的具体接口。

关于Map体系

像Map是一个接口,而我们平时的HashMap,WeakHashMap都是实现了Map接口。

扫描二维码关注公众号,回复: 2515114 查看本文章

关于Collection体系

Collection的接口如下

首先AbstractCollection是实现了Collection接口,而作为AbstractCollection子类的AbstractList,AbstractQueue和AbstractSet分别实现了Collection接口的扩展类包括List接口,Queue接口和Set接口,Collection接口的基类是Iterable类

Collection之List

所以我们可以说ArrayList,Vector作为AbstractList的子类,都是List接口实现对象。后面Set和Queue同理

而具体的实现类中也不乏实现多接口的情况,如

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>{...}

Collection之Set

Collection之Queue

队列这个可能平时比较少介绍到

 

猜你喜欢

转载自blog.csdn.net/arthurs_l/article/details/81329878