簡體   English   中英

填充數組列表java

[英]Fill a list of arrays java

我想用 Java 填充一個數組列表我嘗試了這個以練習一點:

ArrayList <int []> temp = new ArrayList <int []>();
    for (int a = 1; a < 4 ; a++) {
        int [] array = new int [8];
            for (int i = 0; i < 8; i++) {
                array [i] = i*a;
            }
        System.out.println(array);
        temp.add(array);    
    }
System.out.println(temp);

這是我得到的輸出

[[I@15db9742, [I@6d06d69c, [I@7852e922]

請問,為什么我有這個奇怪的結果?

temp定義為ArrayList <int []> ,即數組列表。 在Java中,當您打印某些內容時,例如 通過調用System.out.println(temp) ,可以通過隱式調用toString()將有關對象轉換為字符串。 ArrayList重寫toString()並依次打印其每個元素。 對於每個元素,還調用toString() 但是,沒有為int[]定義toString() ,因此您只需獲取對象引用即可。 看起來很有趣的字符串[I@6d06d69c 要以有意義的方式打印temp的值,您需要將每個int[]轉換為人類可讀的內容。 最簡單的方法是利用java.util.Arrays.toString()

因此,您可以嘗試執行以下操作:

for (int[] element : temp) {
     System.out.println(Arrays.toString(element));
}

您正在打印一個ArrayList。 嘗試使用循環來打印或保存結果。

例如:

for(int i=0; i<ArrayList.size(); i++){
    System.out.println(ArrayList.get(i[i]));
}

您不應該直接打印一個數組列表。

打印數組時,將顯示其引用,而不顯示其元素。 嘗試將數組替換為另一個ArrayList

您正在做的是先打印對象類名稱表示形式,然后打印@,然后打印Hashcode。

您的輸出:

[I @ 15db9742,[I @ 6d06d69c,[I @ 7852e922]

I是對象類的表示形式

Numbers followed by @是哈希碼。

因此,當您調用此System.out.println(temp); 您正在打印array默認表示形式。 要獲得有意義的東西和數據,您需要執行以下操作:

System.out.println(java.util.Arrays.toString(temp));

暫無
暫無

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

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