Java 布尔表达式比较列表出现问题<;int[]>。带有数组的get()函数

Java 布尔表达式比较列表出现问题<;int[]>。带有数组的get()函数,java,arrays,list,for-loop,collections,Java,Arrays,List,For Loop,Collections,我试图在给出以下代码的情况下计算并返回true。为什么.get(i)不等于int数组?Intellisense没有发现任何编译错误 private static boolean isTravelled(List<List<int[]>> paths, int x, int y) { int[] arr = new int[]{x, y}; boolean isTravelled = false; for (List<int[]> pa

我试图在给出以下代码的情况下计算并返回true。为什么.get(i)不等于int数组?Intellisense没有发现任何编译错误

private static boolean isTravelled(List<List<int[]>> paths, int x, 
int y) {
    int[] arr = new int[]{x, y};
    boolean isTravelled = false;
    for (List<int[]> path : paths) {
        for (int i = 0; i < path.size(); i++) {
            if (path.get(i) == arr) {
                isTravelled = true;
            }
        }
    }
    return isTravelled;
}
private静态布尔值已遍历(列表路径,int x,
int(y){
int[]arr=新的int[]{x,y};
布尔值isTravelled=false;
用于(列表路径:路径){
对于(int i=0;i
我尝试创建一个LinkedList来比较列表路径

List<int[]> arrL = new LinkedList<>();
int[] arr = new int[]{x, y};    
arrL.add(arr);

for(List<int[]> path : paths) {
     for (int i = 0; i < path.size(); i++) {
          if (path.get(i) == arrL.get(0)) {

          }
     }
}
List arrL=newlinkedlist();
int[]arr=新的int[]{x,y};
arrL.add(arr);
用于(列表路径:路径){
对于(int i=0;i

我希望将IsTraveled更改为true,但if语句永远不会返回true。

path.get(I)=arr
-这不是在java中比较数组的方式


将其更改为
Arrays.equals(path.get(i),arr)
,因为您希望比较数组的内容,而不是它们的引用。

您在开始时创建
arr
,并且只比较标识,而不是其内容。所以这永远都不是真的。我正在努力存储一个临时数组来保存path.get(I)的内容,也许这会解决它。使用for-each循环来迭代
path
,也会更好<代码>获取(int)
对于某些列表(例如
链接列表
)可能会很昂贵。最后,如果您只想发出成功信号,您可以从循环中间返回true。谢谢!成功了。我知道我一定在记忆中引用了不同的对象。