我正在使用BlockingQueue
,希望能够查看队列中的下一个元素。 Queue.peek()
给了我第一个下一个元素,但我需要更深入。
是否有标准方式,或者我应该自己实施(包括处理线程安全问题)?
答案 0 :(得分:0)
了解您正在使用的数据结构及其用途。
您可以通过不同的数据结构执行相同的工作,例如[List,Set,Array,Vector,Stack,Queue等]。但是他们每个人都有自己的特色。
队列用于FIFO,您以相同的方式访问元素,访问下一个元素,第一个元素应移出。
答案 1 :(得分:0)
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);
}
答案 2 :(得分:-2)
使用while循环
while ((value=q.poll())!=null)
System.out.println(value);
}