深入挖掘队列

时间:2013-07-25 09:41:59

标签: java queue peek

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

是否有标准方式,或者我应该自己实施(包括处理线程安全问题)?

3 个答案:

答案 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);
    }