在 Java 中实现队列
Implementatin of queue in Java
使用链表而不是数组列表来实现队列更好吗?
如果我 dequeue ,在喜欢的列表实现的情况下,过载会更少?
从 LinkedList 的开头出列元素所需的时间少于从 ArrayList 中出列的时间。
这是因为ArrayList是基于数组的,当第一个元素被移除时,除dequeued之外的所有元素都需要左移一个位置。 ArrayList 中的元素数量越多,所需的时间就越长。
在 LinkedList 的情况下,无论列表有多大,只有恒定数量的引用需要更新才能使第一个元素出队。
当然你可以从 ArrayList 的末尾出列元素,这将花费恒定的时间(大部分时间),但是添加一个新元素(到开头)将需要将所有元素移动一个位置向右。
Java中已经有链表队列实现。我没有分析代码,但我猜想 LinkedList 比 ArrayList 更快地使条目出队。
使用链表而不是数组列表来实现队列更好吗? 如果我 dequeue ,在喜欢的列表实现的情况下,过载会更少?
从 LinkedList 的开头出列元素所需的时间少于从 ArrayList 中出列的时间。
这是因为ArrayList是基于数组的,当第一个元素被移除时,除dequeued之外的所有元素都需要左移一个位置。 ArrayList 中的元素数量越多,所需的时间就越长。
在 LinkedList 的情况下,无论列表有多大,只有恒定数量的引用需要更新才能使第一个元素出队。
当然你可以从 ArrayList 的末尾出列元素,这将花费恒定的时间(大部分时间),但是添加一个新元素(到开头)将需要将所有元素移动一个位置向右。
Java中已经有链表队列实现。我没有分析代码,但我猜想 LinkedList 比 ArrayList 更快地使条目出队。