簡體   English   中英

即使值/順序相同,原始列表似乎也不匹配? 可能嗎?

[英]primitive list's don't seem to match even when values/order are the same? Is it possible?

我有一個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.util.Arrays.toString(int[])方法來直觀地查看數組的內容:

import java.util.Arrays;
// ... code
System.out.println (" " + Arrays.toString(arr));

正在打印的是HASHCODE。 就像兩個都是獨立的對象一樣,它們分別存儲在堆內存中。 HashCode就是JVM分配給每個對象的唯一編號。 我希望這是您要尋找的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM