假设我有一个队列,我想要清空它。我需要做的是类似于以下的处理:
void emptyQueue(Queue<T> q) {
T i;
while ((i = q.poll()) != null)
consume(i);
}
但这种方法感觉很古老。 我想要更像forEach方法的东西。当然,它是存在的——Queue是一个Collection——但它是遍历元素而不是消费它们。 理想情况下,我希望在Queue上有一个pollEach方法——但我似乎找不到合适的东西。 你如何编写这种代码?
forEach
中...q.forEach(this::consume);
应该等同于你的代码。 - daniuwhile
改为:for(T ti= null; (i = queue.poll()) != null; ){...}
这样可能会更好一些,因为i
变量仅在 for 作用域内可用。 - LinoAbstractQueue
,您可以简单地使用clear()
方法。 - RealSkeptic