看看 AbstractSequentialList Java 9

    如今輪到 AbstractSequentialList 啦,Sequential 其實就是序列的意思吧,其實繼承這個抽象類就只有 LinkedList 啦。這個抽象類實現的方法爲後續 LinkedList 這種數據存儲模式定了一個骨架,好比隨機訪問 (get(int index), set(int index, E element), add(int index, E element)。java

   順便提一下, java 9 是有模塊這個概念的,能夠看到 Package 上面的模塊概念微信

    爲了實現鏈表結構的List,開發者須要繼承這個類和實現   listIterator 和 size 方法,對於不能修改的List,開發者僅須要實現 iterator 的 hasNext, next, hasPrevious, previous 和 index方法。函數

    能夠先看看這個類的方法的概覽,再一層層剝開這個洋蔥。3d

    根據集合接口規範中的建議提供一個空(無參數)構造函數。blog

    在 get 方法裏面主要就是實現了 listIterator 方法看着這個方法,若是出現異常狀況,就只會拋出 IndexOutOfBoundsException 越界的異常,這樣合適嗎?繼承

    而後在改抽象類中 ListIterator 仍是個抽象方法,須要實現類根據需求實現吧。接口

   看看 set 方法,從迭代器中取這個值後處理,而後成功返回的是老的值。其中 add 和 remove 方法都是相似的實現。element

    其中  addAll 方法就是用了 for 循環一個個加了。開發

    這個類的方法並非不少!這裏看着比較奇怪的邏輯是 AbstractSequentialList 繼承了AbstractList ,其實在 AbstractList 中實現了 ListIterator<E> listIterator(final int index) ,可是在 AbstractSequentialList 又變成了 public abstract ListIterator<E> listIterator 抽象方法,這樣看着爲何不在AbstractList 層分紅兩個抽象類呢?rem

    後面繼續日後看吧!

有什麼討論的內容,能夠加我微信公衆號:

相關文章
相關標籤/搜索