搜尋

首頁  >  問答  >  主體

java - JDK里为什么LinkedList实现了Deque,而ArrayList却没实现?

可以看到LinkedList implements Deque, 而ArrayList却没有。
另外还有一个ArrayDeque类。

为什么不让List接口继承Deque呢?

伊谢尔伦伊谢尔伦2865 天前1012

全部回覆(1)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 11:43:37

    Deque 繼承自 Queue,其實只要想想 List 不會繼承自 Queue 就可以了。誠然,List 可以輕鬆用 remove(Object o) 實現 Queueremove(),但是一般不會這麼設計,因為它們的意義不一樣。是否要用 List 實作 Queue,這個選擇交給具體的類別來決定,LinkedList 的答案是 yes,ArrayList 則是 no。

    至於為什麼ArrayList 沒實現Queue,這是因為ArrayList 本身只是一個披著List 皮的Array,它是不建議從頂部插入新數據的,否則效率會極差。

    ArrayDeque 則是一個教科書式的 deque 實現,它的存在沒什麼爭議。

    回覆
    0
  • 取消回覆