我们介绍的都是具体的容器类,上节我们提到,所有具体容器类其实都不是从头构建的,它们都继承了一些抽象容器类。这些抽象类提供了容器接口的部分实现,方便了Java具体容器类的实现,理解它们有助于进一步理解具体容器类。
此外,通过继承抽象类,自定义的类也可以更为容易的实现容器接口。为什么需要实现容器接口呢?至少有两个原因:
- 容器类是一个大家庭,它们之间可以方便的协作,比如很多方法的参数和返回值都是容器接口对象,实现了容器接口,就可以方便的参与进这种协作。
- Java有一个类Collections,提供了很多针对容器接口的通用算法和功能,实现了容器接口,就可以直接利用Collections中的算法和功能。
那,具体都有哪些抽象类?它们都提供了哪些基础功能?如何进行扩展?下面就来探讨这些问题。
我们先来看都有哪些抽象类,以及它们与之前介绍的容器类的关系。
抽象容器类
抽象容器类与之前介绍的接口和具体容器类的关系如下图所示:
虚线框表示接口,有Collection, List, Set, Queue, Deque和Map。
有六个抽象容器类:
- AbstractCollection: 实现了Collection接口,被抽象类AbstractList, AbstractSet, AbstractQueue继承,ArrayDeque也继承自AbstractCollection (图中未画出)。
-
网友评论

