在Java中,队列的一种实现是“循环数组”,另一种是“链表”。它们有什么区别?
最佳答案
就它们的使用方式而言,几乎没有任何区别,除非您达到队列的大小限制(我将在稍后解释...)
至于其他注意事项:
链表方法很有优势,因为您无需额外努力即可动态调整队列的大小 - 这是链表的基础。当然,这可以通过重新分配数组来复制,但这不是最简单的方法。
此外,在链表中,没有未使用的内存:在循环数组方法中,如果队列的大小小于数组的最大容量,就会出现“空槽”。然而,这并不意味着链表的内存效率更高,因为:
循环数组方法的优点是没有开销。链表中的每个节点都需要存储对下一个节点的引用 - 如果列表变大,这就会加起来。另一方面,循环数组只是您通过索引访问的一 block 内存,因此没有开销。
每种方法都有利有弊,但实际上,这取决于它所使用的特定情况……除非您无休止地使用队列,否则它可能不会产生太大影响。
关于java - 队列的两种常见实现之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123310/