【问题标题】:Java Queue, entire Queue is replaced by new added elementJava Queue,整个 Queue 被新添加的元素替换
【发布时间】:2015-12-19 02:46:47
【问题描述】:

我正在为一个有工作的学校项目(一个 int 数组)工作,我是 Java 新手,在尝试将这些工作放入队列时遇到了一个奇怪的错误。 我的问题是,一旦我已经在队列中有一个元素,下一个元素将替换队列中的前一个元素, 即如果Queue[0] 持有arr1,并且我添加下一个元素( Queue.add(arr2)),则将arr 2 添加到Queue[1] 但队列也将Queue[0] 替换为arr2。 有很多代码,所以我只发布了我正在使用的以及调用它的函数的位置,一旦执行 .add 就会发生元素更改。

public class drumQueue {

    private Queue<int[]> myQueue = new LinkedList<int[]>();
    private static boolean drumIsBusy = false;
    int index=0;

    public void add(int[] p){
        myQueue.add(p); 
    }

    public void remove(){
        myQueue.remove();
    }

    public int[] getP(){
        System.out.println("POPED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        return myQueue.poll();
    }

    public boolean isDrumIsBusy() {
        return drumIsBusy;
    }

    public void setDrumIsBusy(boolean drumIsBusy) {
        drumQueue.drumIsBusy = drumIsBusy;
    }
    public void print(){
        for( int i =0 ;i < myQueue.size(); i++ ){
            System.out.println(myQueue.peek()[1]+ "ELEMENT!!!!!!!!!!!!!!!");
        }
    }
    public int size(){
        return myQueue.size();
    }
}

在不同的类中使用上述类的方法。

private static void MemeoryManager(int[] a, int[] p) {
    // TODO Auto-generated method stub
    memoryLink.freeSpaceTableBuilder();
    memoryLink.freeSpaceTableBuilder();
    p[2] = memoryLink.addressFinder(p[3]);
    memoryLink.addTooMemory(p[2],p[3],p[1]);
    memoryLink.merge();

    drumQueue.add(p);

    Swap(a,0);
}

【问题讨论】:

  • 您需要创建并发布一个有效的minimal reproducible example(请在回复前阅读链接)。
  • 为什么boolean drumIsBusy 是静态的?
  • 为什么你似乎在 drumQueue 类上调用 add 方法,而不是实例?请注意,顺便说一句,您将需要学习和使用Java naming conventions。变量名应全部以小写字母开头,而类名应以大写字母开头。学习这一点并遵循这一点将使我们更好地理解您的代码,并使您更好地理解他人的代码。
  • memoryLink 显示所有代码的目的是什么?它与您的问题有什么关系?

标签: java queue


【解决方案1】:

我认为您以正确的方式存储数据,但在print() 方法中存在问题。 peek() always 返回队列的头部,因此您只需打印第一个元素 size() 次。尝试使用queue.toArray() 进行打印

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2014-06-02
    相关资源
    最近更新 更多