我們介紹的都是具體的容器類,上節(jié)我們提到,所有具體容器類其實都不是從頭構建的,它們都繼承了一些抽象容器類。這些抽象類提供了容器接口的部分實現,方便了Java具體容器類的實現,理解它們有助于進一步理解具體容器類。
此外,通過繼承抽象類,自定義的類也可以更為容易的實現容器接口。為什么需要實現容器接口呢?至少有兩個原因:
- 容器類是一個大家庭,它們之間可以方便的協(xié)作,比如很多方法的參數和返回值都是容器接口對象,實現了容器接口,就可以方便的參與進這種協(xié)作。
- Java有一個類Collections,提供了很多針對容器接口的通用算法和功能,實現了容器接口,就可以直接利用Collections中的算法和功能。
那,具體都有哪些抽象類?它們都提供了哪些基礎功能?如何進行擴展?下面就來探討這些問題。
我們先來看都有哪些抽象類,以及它們與之前介紹的容器類的關系。
抽象容器類
抽象容器類與之前介紹的接口和具體容器類的關系如下圖所示:
虛線框表示接口,有Collection, List, Set, Queue, Deque和Map。
有六個抽象容器類:
- AbstractCollection: 實現了Collection接口,被抽象類AbstractList, AbstractSet, AbstractQueue繼承,ArrayDeque也繼承自AbstractCollection (圖中未畫出)。