我正在寻找一种 Java 7 数据结构,它的行为类似于 ajava.util.Queue
并且还具有“最终项目已被删除”的概念。
例如,应该可以表达如下概念:
while(!endingQueue.isFinished()) {
Element e = endingQueue.remove()
doSomethingWith(e);
}
我正在寻找一种 Java 7 数据结构,它的行为类似于 ajava.util.Queue
并且还具有“最终项目已被删除”的概念。
例如,应该可以表达如下概念:
while(!endingQueue.isFinished()) {
Element e = endingQueue.remove()
doSomethingWith(e);
}
使用接口java.util.Queue,怎么样
while(queue.peek() != null) {
Element e = queue.remove();
doSomethingWith(e);
}
编辑回答阿卜杜勒的评论:
根据约定,空项可能是 java.util.Queue 的有效条目
您将不得不指出 javadoc 中说明这一点的特定句子,因为我没有看到它。
我看到的是 peek 方法的描述。
检索但不删除此队列的头部,如果此队列为空,则返回 null。
现在,队列中的元素可以为空。但它仍然是一个元素,将由 peek 和 remove 方法返回。
另外,考虑一个并发访问的队列。仅检查 null 可能不足以确定生产者是否已将元素放入队列。
队列是一个接口。您必须使用具体的实现来测试它,例如ConcurrentLinkedQueue。如果没有一个具体实现可以满足您的需求,您可以自己实现 Queue。
Queue 接口提供了一种查看队列中是否有元素的方法。
ConcurentLinkedQueue 类提供了一个额外的方法来查看队列中是否有一个元素,isEmpty。
测试并查看您是否遇到实际的性能问题,而不是担心可能发生或可能不会发生的性能问题。