如何从队列中获取特定元素?

use*_*078 3 java collections

与之不同ArrayList,没有get(int index)方法Queue可以在指定位置检索元素.

有人请告诉我如何实现这个目标Queue

谢谢.

小智 7

按索引访问元素不是队列概念的一部分.

如果需要按索引访问元素,则需要列表而不是队列.


Vla*_*lad 6

您可以从队列中删除元素,直到到达所需的元素为止。您可以将删除的元素重新添加到队列末尾或将它们放入不同的队列中(并在到达所需元素后添加其余元素)。

不过,您确实不应该使用这样的队列!

public static <T> T get(Queue<T> queue, int index) {
    synchronized (queue) {
        if (queue == null) {
            return null;
        }

        int size = queue.size();
        if (index < 0 || size < index + 1) {
            return null;
        }

        T element = null;
        for (int i = 0; i < size; i++) {
            if (i == index) {
                element = queue.remove();
            } else {
                queue.add(queue.remove());
            }
        }

        return element;     
    }
}
Run Code Online (Sandbox Code Playgroud)