java - 即使值/顺序相同,原始列表似乎也不匹配?是否可以?

标签 java arrays

我有一个 ints[] 列表,一次列出一个。我发现了一个有趣的模式,结果似乎颠倒了,所以为了测试它,我颠倒了进入我的方法的列表,然后显示它们,发现它们匹配。我想以编程方式找到它们,但是当我将列表本身打印为字符串时,即使项目/订单匹配,结果也不匹配。

这是方法(它只是获取数据,反转顺序并打印两者......没什么花哨的):

private static void show (int [] arr) { 
    //before we print results lets reverse the list and study if there's something we can do to make this go faster
    int[] ReversedList = new int[arr.length];
    for (int x = arr.length-1, y=0; x>=0;x--, y++) {
        ReversedList[y] = arr[x];
    }
    for (int x = 0; x < arr.length; x++) {
        //System.out.print (" " + (arr [x] + low[x]));
        System.out.print (" " + (arr[x]));
    }
    System.out.println (" " + arr.toString());
    for (int x = 0; x < ReversedList.length; x++) {
        //System.out.print (" " + (arr [x] + low[x]));
        System.out.print (" " + (ReversedList[x]));
    }

    System.out.println (" " + ReversedList.toString() + "  ***");
   //System.out.println("*****************");
}

但是字符串不匹配。这是输出的片段(*表示它被颠倒了):

 0 0 0 20 [I@199a0c7c
 20 0 0 0 [I@50a9ae05  ***
....
 20 0 0 0 [I@1e9af0b1
 0 0 0 20 [I@4e300429  ***

它们都是这样的,我不确定为什么它们在相同时不匹配(至少看起来相同)。我有一个名为 results 的数组列表,其中包含所有 int[] ,我尝试执行 results.indexof(reversed) 但没有运气(我对所有内容都得到“-1”)。我怎样才能找到匹配项?

最佳答案

您正在查看您拥有的 int 数组的地址。数据是相同的,但数据存储在多个位置,因为您正在使用多个实例。

要比较数组,请使用 Arrays.equals(int[], int[]) 。或者,您可以使用 Arrays.toString(int[]) 以更好的格式查看数组中的信息。 .

关于java - 即使值/顺序相同,原始列表似乎也不匹配?是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763377/

相关文章:

java - 不能用工厂方法模式控制实例?

java - 使用 MD5 哈希密码注册/登录 JAVA

javascript - 使用 Node.js 从网页中抓取 URL

javascript - 如果我只在数组中设置一个高索引,它会浪费内存吗?

javascript - 从 PHP 到 Javascript 的数组处理

java - java中为什么限制在内部类中声明静态成员变量?

java - Android中如何淡出滑动层的背景

java - 将 PHP 生成的公钥转换为 Java 公钥

arrays - 基本快速排序 : listing array with each partition call

javascript - 无法从推送数组中检索对象属性