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