我正在使用BlockingQueue
, 并且希望能够查看队列中的下一个元素。Queue.peek()
给了我第一个下一个元素,但我需要更深入。
有没有标准的方法,或者我应该自己实现(包括处理线程安全问题)?
queue.stream().peek(e -> System.out.println(e));
在遍历时,您可以对每个元素做一些事情,然后构建自己的元素。
System.out.println(Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> System.out.println("After Filter: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("After Mapped value: " + e))
.collect(Collectors.toList()));
After Filter: three
After Mapping: THREE
After Filter: four
After Mapping: FOUR
[THREE, FOUR]
或者
Queue<Boolean> qq = new ArrayBlockingQueue<>(10);
for(Boolean element : qq) {
System.out.println(element);
}
了解您正在使用的数据结构及其用途。
您可以通过 [List,Set,Array,Vector,Stack,Queue 等] 等不同的数据结构来完成相同的工作。但他们每个人都有自己的特点。
队列用于先进先出,您以相同的方式访问元素,要访问下一个元素,应将第一个元素移出它。
使用 while lopp
while ((value=q.poll())!=null)
System.out.println(value);
}