扫码关注官方订阅号
可以看到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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Deque继承自Queue,其实只要想想List不会继承自Queue就可以了。诚然,List可以轻松用remove(Object o)实现Queue的remove(),但是一般不会这么设计,因为它们的含义不一样。是否要用List实现Queue,这个选择交给具体的类来决定,LinkedList的答案是 yes,ArrayList则是 no。至于为什么
ArrayList没实现Queue,这是因为ArrayList本身只是一个披着List皮的Array,它是不建议从顶部插入新数据的,否则效率会极差。ArrayDeque则是一个教科书式的 deque 实现,它的存在没什么争议。