Java中是否有任何类提供与Queue相同的功能,但是有返回对象的选项,并且仅在收集结束时将其设置为不删除它的选项?
最佳答案
Queue
不能直接提供这种方法。但是,您可以使用poll
和add
轻松创建此功能,即删除(并获取)队列中的第一个元素,然后将其重新添加到队列的末尾。
与相同功能的其他实现相比,此方法没有缺点。请注意,对于大多数实现,两个操作都可以在O(1)
中执行,例如LinkedList
。但是PriorityQueue
在插入O(log(n))
时速度较慢,但是您不能避免这种情况。
还要注意,即使您将设计自己的LinkedList
或PriorityQueue
,最终也将使用相同的逻辑进行此操作:删除第一个元素,然后在其末尾重新添加。
这是一些代码:
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/