可以看到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 实现,它的存在没什么争议。