Java中是否有任何类提供与Queue相同的功能,但是有返回对象的选项,并且仅在收集结束时将其设置为不删除它的选项?

最佳答案

Queue不能直接提供这种方法。但是,您可以使用polladd轻松创建此功能,即删除(并获取)队列中的第一个元素,然后将其重新添加到队列的末尾。



与相同功能的其他实现相比,此方法没有缺点。请注意,对于大多数实现,两个操作都可以在O(1)中执行,例如LinkedList。但是PriorityQueue在插入O(log(n))时速度较慢,但​​是您不能避免这种情况。

还要注意,即使您将设计自己的LinkedListPriorityQueue,最终也将使用相同的逻辑进行此操作:删除第一个元素,然后在其末尾重新添加。



这是一些代码:

public <E> E pollAndReInsert(final Queue<E> queue) {
    final E element = queue.poll();
    queue.add(element);
    return element;
}

关于java - Java“不删除”队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46552740/

10-13 21:27