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