我正在(在 Java 中)研究递归图像处理算法,该算法从中心点向外递归遍历图像的像素。
不幸的是,这会导致堆栈溢出。所以我决定切换到基于队列的算法。
现在,这一切都很好——但考虑到它的队列将在很短的时间内分析数千个像素,同时不断弹出和推送,而不保持可预测的状态(它可能在长度 100 之间,和 20000),队列实现需要具有显着的快速弹出和推送能力。
链表看起来很有吸引力,因为它能够将元素推送到自身而不重新排列列表中的任何其他内容,但为了使其足够快,它需要轻松访问其头部和尾部(或次要-last 节点,如果它不是双重链接的)。可悲的是,我找不到任何与 Java 中链表的底层实现相关的信息,所以很难说链表是否真的是要走的路……
这让我想到了我的问题。对于我打算做的事情,Java 中 Queue 接口的最佳实现是什么?(除了队列的头部和尾部之外,我不希望编辑甚至访问任何东西——我不希望进行任何类型的重新排列或任何事情。另一方面,我确实打算做很多推送和弹出,队列的大小会发生很大变化,因此预分配效率低下)