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

难得这几天都比较闲,所以有时间弄弄博客。刚好在忘了集合的那些继承关系,就顺便整理了一下,而我们平时常见的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接口。

关于Collection体系

Collection的接口如下

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

Collection之List

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

而具体的实现类中也不乏实现多接口的情况,如LinkedList(有兴趣了解源码分析的可以参考我的《LinkedList 插入 源码分析》)

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

Collection之Set

Collection之Queue

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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值