Java 布尔表达式比较列表出现问题<;int[]>。带有数组的get()函数
我试图在给出以下代码的情况下计算并返回true。为什么.get(i)不等于int数组?Intellisense没有发现任何编译错误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
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。谢谢!成功了。我知道我一定在记忆中引用了不同的对象。