可以看到LinkedList implements Deque, 而ArrayList却没有。
另外还有一个ArrayDeque类。
为什么不让List接口继承Deque呢?
伊谢尔伦2017-04-17 11:43:37
Deque
繼承自 Queue
,其實只要想想 List
不會繼承自 Queue
就可以了。誠然,List
可以輕鬆用 remove(Object o)
實現 Queue
的 remove()
,但是一般不會這麼設計,因為它們的意義不一樣。是否要用 List
實作 Queue
,這個選擇交給具體的類別來決定,LinkedList
的答案是 yes,ArrayList
則是 no。
至於為什麼ArrayList
沒實現Queue
,這是因為ArrayList
本身只是一個披著List
皮的Array
,它是不建議從頂部插入新數據的,否則效率會極差。
ArrayDeque
則是一個教科書式的 deque 實現,它的存在沒什麼爭議。