我试着问了一个类似的问题,但我没有得到任何令人满意的答案。这个问题背后的动机是这个问题的第一个(接受的)答案,粗略地说:
ArrayDeque 没有像 ArrayList 那样移动内容的开销。
在我看来,他们应该采取同样的行动。唯一的区别是它ArrayList
是从List
接口实现的,这意味着它可以访问任意索引。另一方面,ArrayDeque
是从Queue
接口实现的,它以LIFO/FIFO方式工作。
我想指出的是,它们都使用AN ARRAY来存储元素。这意味着如果他们都有一个包含这些元素的数组:
2, 4, 6, 8, 10
,arraylist.remove(0);
并且arraydeque.poll();
应该都删除值为 2 的first/head元素。
现在我的大问题。在这两种情况下,所有左边的数字(4、6、8、10)是否都向左移动了 1 个插槽?当我们进行任何结构修改时,它们移动元素的方式ArrayList
和方式有什么区别吗?ArrayDeque