【问题标题】:How to add an element in front of Queue in java?java中如何在Queue前面添加一个元素?
【发布时间】:2014-10-13 12:41:06
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java queue reverse deque


【解决方案1】:

以下是在集合中使用 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);

}

}

【讨论】:

    【解决方案2】:

    如果你使用“Queue q1”——那只是变量q1的声明,而Queue本身只是一个接口。您是否可能希望使用 Queue 的某些实现?

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

    【讨论】:

      【解决方案3】:

      如果你必须在前面插入一个元素,Queue 绝对不是解决方案。去double ended queue

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-12
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多