我正在使用Java编写递归图像处理算法,该算法从中心点开始递归遍历图像像素。
不幸的是,这会导致堆栈溢出。因此,我决定切换到基于队列的算法。
现在,这都很好 - 但考虑到它的队列会在非常短的时间内分析数千个像素,同时不断地弹出和推入,而没有维护可预测的状态(它可能在长度100到20000之间的任何位置),队列实现需要具有显着快速的弹出和推入能力。
由于链表可以将元素推送到自身而不重新排列列表中的其他任何内容,因此链表似乎很有吸引力,但为了使它足够快,它需要轻松访问其头部和尾部(或倒数第二个节点,如果它不是双向链接)。不幸的是,我找不到与Java中链表的底层实现相关的任何信息,因此很难说链表是否真的是正确的选择...
这就带来了我的问题。对于我打算做的事情,Java中的Queue接口的最佳实现是什么?(我不想编辑甚至访问除队列的头部和尾部之外的任何内容 - 我不想进行任何形式的重新排列或其他操作。另一方面,我确实打算大量进行推入和弹出,并且队列将发生相当大的变化,因此预先分配资源将是低效的)