首页 > JDK里为什么LinkedList实现了Deque,而ArrayList却没实现?

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

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

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


Deque 继承自 Queue,其实只要想想 List 不会继承自 Queue 就可以了。诚然,List 可以轻松用 remove(Object o) 实现 Queueremove(),但是一般不会这么设计,因为它们的含义不一样。是否要用 List 实现 Queue,这个选择交给具体的类来决定,LinkedList 的答案是 yes,ArrayList 则是 no。

至于为什么 ArrayList 没实现 Queue,这是因为 ArrayList 本身只是一个披着 List 皮的 Array,它是不建议从顶部插入新数据的,否则效率会极差。

ArrayDeque 则是一个教科书式的 deque 实现,它的存在没什么争议。

【热门文章】
【热门文章】