如何在java中添加Queue前面的元素?

时间:2014-08-20 08:19:34

标签: java queue reverse deque

我正在使用Queue<T> q1,我知道将在队列末尾使用q1.offer();添加一个元素。但是现在,我想要做的是在队列前面添加一个元素,这在Queue中是不可能的。我能想到的可能方法是

  • 使用双端队列,我可以在前面和后面添加元素。
  • 反转q1,在队列末尾添加元素并再次反转。

现在,作为一名非程序员,我不确定如何编写这些方法;哪一个更经济,更容易做。

我在1)中面临的问题是将现有队列转换为Deque,反之亦然;在2)如何使用Collections.reverseOrder();来反转现有的队列。

3 个答案:

答案 0 :(得分:3)

以下是使用集合中的deque和asLifoQueue方法向队列的第一个添加元素的方法。这将按先出顺序排列元素...

    public class Practice15 {

public static void main(String[] args) {


    Deque<Integer> dd=new ArrayDeque<Integer>();

    dd.offerFirst(123);

    dd.offerFirst(258);

    dd.offerFirst(125);

    System.out.println(dd);

    Queue<Integer> q1=Collections.asLifoQueue(dd);

    System.out.println(q1);

}

}

答案 1 :(得分:1)

如果你必须在前面插入一个元素,Queue肯定不是解决方案。转到double ended queue

答案 2 :(得分:1)

如果您使用&#34;队列q1&#34; - 这只是变量 q1 的声明,而 Queue 本身只是一个接口。你可能想要使用Queue的一些实现吗?

查看Java API:http://docs.oracle.com/javase/7/docs/api/java/util/Queue.html