Java 比较两个列表(作为字符串)似乎永远不会匹配

Java 比较两个列表(作为字符串)似乎永远不会匹配,java,arrays,Java,Arrays,我不知道我做错了什么,我有两个项目列表,并试图比较这两个项目 private static void check_results(ArrayList<int[]> result2, int[] reversedList) { //check results list for matches System.out.println(); for (int[] item : result2) { System.out.println(Arrays.t

我不知道我做错了什么,我有两个项目列表,并试图比较这两个项目

private static void check_results(ArrayList<int[]> result2, int[] reversedList) {
    //check results list for matches
    System.out.println();
    for (int[] item : result2) {
        System.out.println(Arrays.toString(item) + " compared to " + Arrays.toString(reversedList));
        if ( Arrays.toString(item) == Arrays.toString(reversedList)) 
        {   
            System.out.println("we have a match!");
        }
    }

}
我做错了什么?我知道result2以ArrayList开始,但我迭代过它,所以它是int[],就像我的变量reversedList一样,但我从来没有找到匹配项。

在字符串上使用equals,请参见,==通过引用进行比较,即,您拥有的两个引用指向内存中完全相同的对象,不是按值,内存中可能有多个具有相同内容的字符串实例

您需要的是:

if ( Arrays.toString(item).equals( Arrays.toString(reversedList) )) { ... }
字符串可能已优化,也可能未优化,您永远无法确定ok,在JLS定义的某些情况下,例如,当两个字符串在同一个编译单元中定义,并且它们的值完全相同而无需任何额外的编译时验证时,它们将使用相同的引用,但是,根据您的操作系统、JVM版本、构建编号、宇宙的当前状态等,使用例如ab和a+b可能是相同的或不同的引用

请参阅其他注释或。

在字符串上使用equals请参阅,==按引用进行比较,即,您拥有的两个引用指向内存中完全相同的对象,而不是按值。内存中可能有多个具有相同内容的字符串实例

您需要的是:

if ( Arrays.toString(item).equals( Arrays.toString(reversedList) )) { ... }
字符串可能已优化,也可能未优化,您永远无法确定ok,在JLS定义的某些情况下,例如,当两个字符串在同一个编译单元中定义,并且它们的值完全相同而无需任何额外的编译时验证时,它们将使用相同的引用,但是,根据您的操作系统、JVM版本、构建编号、宇宙的当前状态等,使用例如ab和a+b可能是相同的或不同的引用


请参阅一些附加说明或。

比较字符串使用的对象==检查它们是否是完全相同的对象。换句话说,它们在内存中引用相同的位置。您想改用.equals方法。

比较字符串使用的对象==检查它们是否是完全相同的对象。换句话说,它们在内存中引用相同的位置。您希望改用.equals方法。

不要将字符串与==进行比较,它会比较字符串对象的引用以进行有意义的比较。请使用equals或equalsIgnoreCase方法

而不是

if ( Arrays.toString(item) == Arrays.toString(reversedList)) 
使用以下命令:

if (Arrays.toString(item).equals(Arrays.toString(reversedList)))
如果需要不区分大小写的比较,也可以使用此选项

if (Arrays.toString(item).equalsIgnoreCase(Arrays.toString(reversedList))) 
不将字符串与==进行比较它使用equals或equalsIgnoreCase方法比较字符串对象的引用以进行有意义的比较

而不是

if ( Arrays.toString(item) == Arrays.toString(reversedList)) 
使用以下命令:

if (Arrays.toString(item).equals(Arrays.toString(reversedList)))
如果需要不区分大小写的比较,也可以使用此选项

if (Arrays.toString(item).equalsIgnoreCase(Arrays.toString(reversedList)))