gpt4 book ai didi

java - Java队列的最佳实现?

转载 作者:IT老高 更新时间:2023-10-28 20:42:06 26 4
gpt4 key购买 nike

我正在(在 Java 中)研究一种递归图像处理算法,该算法从中心点向外递归遍历图像的像素。

不幸的是,这会导致堆栈溢出。所以我决定改用基于队列的算法。

现在,这一切都很好——但考虑到它的队列将在很短的时间内分析数千个像素,同时不断弹出和推送,而不保持可预测的状态(它可能介于长度为 100 和 20000),队列实现需要具有显着的快速弹出和推送能力。

链表看起来很有吸引力,因为它能够将元素推送到自身而不重新排列列表中的任何其他内容,但为了使其足够快,它需要轻松访问其头部和尾部(或倒数第二个节点,如果它不是双重链接的)。可悲的是,我找不到任何与 Java 中链表的底层实现相关的信息,所以很难说链表是否真的是要走的路……

这让我想到了我的问题。对于我打算做的事情,Java 中 Queue 接口(interface)的最佳实现是什么? (除了队列的头部和尾部之外,我不希望编辑甚至访问任何内容——我不希望进行任何类型的重新排列或任何事情。另一方面,我确实打算做很多推送和弹出,队列的大小会发生相当大的变化,因此预分配效率低下)

最佳答案

用途:

Queue<Object> queue = new LinkedList<>();

您可以使用 .offer(E e) 将元素附加到队列的末尾,并使用 .poll() 出列并检索头部(第一个元素) 的队列。

Java 定义了接口(interface)QueueLinkedList提供了一个实现。

它还维护对 Head 和 Tail 元素的引用,您可以分别通过 .getFirst().getLast() 获得。


感谢@Snicolas 提出的队列接口(interface)建议

关于java - Java队列的最佳实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com