1

我正在使用BlockingQueue, 并且希望能够查看队列中的下一个元素。Queue.peek()给了我第一个下一个元素,但我需要更深入。

有没有标准的方法,或者我应该自己实现(包括处理线程安全问题)?

4

3 回答 3

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);
    }
于 2021-06-25T07:53:32.753 回答
-1

了解您正在使用的数据结构及其用途。

您可以通过 [List,Set,Array,Vector,Stack,Queue 等] 等不同的数据结构来完成相同的工作。但他们每个人都有自己的特点。

队列用于先进先出,您以相同的方式访问元素,要访问下一个元素,应将第一个元素移出它

于 2013-07-25T09:46:11.487 回答
-2

使用 while lopp

while ((value=q.poll())!=null)
            System.out.println(value);
    }
于 2013-07-25T09:44:47.753 回答