【问题标题】:comparing top of queue to an array list element [duplicate]将队列顶部与数组列表元素进行比较[重复]
【发布时间】:2017-11-30 17:41:43
【问题描述】:

我在 Java 中编写了一个方法,它接收一个数组列表,其中包含另一个大小为 3 的数组作为每个元素。例如{{0,0,0},{1,0,0},{1,1,0}...}。

如果队列的头部在这个数组列表中,则该方法有效。

队列与数组列表具有相同的结构。

public static Queue<Integer[]> q = new LinkedList<Integer[]>();
List<Integer[]> outcomes = new ArrayList<Integer[]>();

Public static boolean outcomeSearch(List<Integer[]> outcomes){
 boolean check = false;
 for (int i=0; i<outcomes.size(); i++){
     if (q.peek() == outcomes.get(i)){
         check = true;
     }
 }
 return check;
}

由于某种原因,我无法让 if 语句工作。实际上,队列的头部是 {0,0,0} 结果是 {{0,0,0},{8,0,0},{0,5,0}...}。所以 for 循环应该在第一次迭代中将检查布尔值设为真。但事实并非如此。

这个问题是比较数组内部的元素,而不是整个数组本身。

【问题讨论】:

    标签: java for-loop if-statement queue


    【解决方案1】:

    看起来问题可能在于队列的声明方式,以及它在方法中的实现方式。检查您是否将队列声明为类的静态变量或实例变量。

    【讨论】:

    • 我们无法知道,因为 OP 没有向我们展示 q 的定义,但也可能是它们的比较方式。
    • 队列声明如下: public static Queue q = new LinkedList();
    • 尝试打印您的 q LinkedList 以检查它是否不为空。我看不出你的代码有什么问题。
    猜你喜欢
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多