我們介紹的都是具體的容器類,上節(jié)我們提到,所有具體容器類其實都不是從頭構建的,它們都繼承了一些抽象容器類。這些抽象類提供了容器接口的部分實現,方便了Java具體容器類的實現,理解它們有助于進一步理解具體容器類。

此外,通過繼承抽象類,自定義的類也可以更為容易的實現容器接口。為什么需要實現容器接口呢?至少有兩個原因:

  • 容器類是一個大家庭,它們之間可以方便的協(xié)作,比如很多方法的參數和返回值都是容器接口對象,實現了容器接口,就可以方便的參與進這種協(xié)作。
  • Java有一個類Collections,提供了很多針對容器接口的通用算法和功能,實現了容器接口,就可以直接利用Collections中的算法和功能。 

那,具體都有哪些抽象類?它們都提供了哪些基礎功能?如何進行擴展?下面就來探討這些問題。

我們先來看都有哪些抽象類,以及它們與之前介紹的容器類的關系。

抽象容器類

抽象容器類與之前介紹的接口和具體容器類的關系如下圖所示:

虛線框表示接口,有Collection, List, Set, Queue, Deque和Map。

有六個抽象容器類:

  • AbstractCollection: 實現了Collection接口,被抽象類AbstractList, AbstractSet, AbstractQueue繼承,ArrayDeque也繼承自AbstractCollection (圖中未畫出)。
  • 網友評論