2013-10-30 37 views
0

我試圖找到這個簡單的代碼有什麼問題,我試圖在本網站上搜索樣本,但無法找到它。 我想創建數組列表。所以當我調用myList.get(0)時,它會輸出第一個數組1。如果myList.get(0)[0]是第一個值。 謝謝 我的代碼:列表中的數組

List<int[]> myList = new ArrayList<int[]>(); 
    int[] array1 = {15, 20, 40}; 
    int[] array2 = {30, 7, 18}; 

    myList.add(array1); 
    myList.add(array2); 
    System.out.println(myList); 

給出了這個類型的輸出。 [我@ 129f3b5,[I @ 13f3045]

+0

其完全正確,您期望和未發生什麼 –

+0

大家感謝您的回答。 – Sergey

回答

2

在你的例子中myList.get(0)將返回一個整數的數組,因爲這就是你的列表包含的內容。

所以,如果你要打印你應該這樣做

for (int[] array : myList) { 
    for (Integer i : array) { 
     System.out.println(i); 
    } 
} 
1

你應該打印這樣的:

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

陣列是對象,如你所知,每個對象都有toString方法。缺省toString顯示類名稱表示,然後添加@,然後添加哈希碼。

0

I @ 129f3b5

I @ 13f3045

是默認toString()實現爲陣列。

所以代碼是完全正確的,數組存儲在列表中。只是toString()對陣列沒有多大用處。

簡單地說 - 你不應該依賴數組toString()

5

你必須做這樣的事情在陣列中的所有元素,進口java.util.Arrays和使用這種靜態方法Arrays#toString(int[])

for(int[] a : myList) { 
    System.out.println(Arrays.toString(a)); 
} 
+2

+1不會造成我的錯誤。 – Maroun

1

不幸的是,Java數組沒有好的toString()方法,它將返回格式良好的包含它的元素的視圖。而System.out.println(Object)實際上稱這種不好的toString()方法,它只是返回數組的類型([[I),後面跟着它的哈希碼。

要得到一個數組的有意義的表示,使用java.util.Arrays.toString()

for (int[] array : myList) { 
    System.out.println(Arrays.toString(array); 
} 
0

您可以使用Arrays.toString()打印陣列。 ;

System.out.printlin(myList.get(0)) // first Array from the list 
System.out.printlin(myList.get(1)) // second Array from the list 

使用下面的代碼打印整個列表。

for(int[] array : myList) { 
      System.out.println(Arrays.toString(array)); 
    } 
1

這將首先打印出新行上的每個值,現在您應該自己編輯輸出。第二個循環將使用Arrays.toString()打印出每個表格。

public static void main(String[] args) { 
    List<int[]> myList = new ArrayList<int[]>(); 
    int[] array1 = { 15, 20, 40 }; 
    int[] array2 = { 30, 7, 18 }; 

    myList.add(array1); 
    myList.add(array2); 
    for (int[] tables : myList) 
     for (int i : tables) 
      System.out.println(i); 
    //This is also possible 
    for (int[] tables : myList) 
     System.out.println(Arrays.toString(tables)); 

} 
0

該代碼是正確的。但是,您必須記住,您不能簡單地打印數組,但必須執行如下操作: System.out.println(Arrays.toString(myList));