添加新元素时,增加数组中每个元素的索引

时间:2016-04-12 14:27:24

标签: java queue

大家好我每次尝试插入一个新元素时都试图增加数组中每个元素的索引。

public void enqueue(Object inValue)
{
    if(isFull())
    {
        throw new IllegalArgumentException ("Full.");
    }
    else
    {
        queue[count] = inValue;
        count += 1;
    }
}

public static void main(String[] args) {
    // creating queue
    Queue q = new Queue();

    // adding items into queue
    q.enqueue("1");
    q.enqueue("2");
    q.enqueue("3");
}

这将导致q [0] = 1,q [1] = 2和q [2] = 3.但我真正想要的是:在我添加q.enqueue之后(" 2" )数组变为:q [0] = 2,q [1] = 1并且在q.enqueue(" 3")之后,数组应如下所示:q [0] = 3,q [1 ] = 2,q [0] = 1。

我真的很抱歉这个坏表达。希望你们能够理解我的问题。 我已经尝试了几个小时,但仍然无法找到一条线索。

2 个答案:

答案 0 :(得分:0)

您可以使用arraycopy https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object,%20int,%20java.lang.Object,%20int,%20int),创建空数组并将新项目放在[0]上,而不是复制其余项目。

虽然。首先,您应该考虑是否真的需要这样做。你有什么问题?

答案 1 :(得分:0)

我建议你在内部使用链表而不是数组。然后,在添加新元素时,不必将每个元素移位。而且你不必担心它会变满(除了由于内存耗尽)。

import java.util.LinkedList;

public class Queue<E> {

    private LinkedList<E> list;
    ...

    public void enqueue(E e) {
        list.addFirst(e); // adds element to the front.
    }
}