2013-03-21 72 views
0

我在做我的第二年大學軟件工程項目,並遇到了問題。我對Java語言(以及一般編程)相當陌生,所以有機會我只是不瞭解語法。如何將ArrayList轉換爲數組數組?

我有一個方法,我想用來返回一個Object數組的數組。這是用於JTable的擺動。因此,數組中的每個元素(它們本身就是數組)都是表中的行,「內部」數組的元素是該行中每列的值。

我不知道在編碼時會有多少列,因此我已經提出了一個方法來生成這個依賴於其他對象的數組。

這是我的代碼:

public Object[][] getData(ArrayList<IModule> modules) { 

    ArrayList<String[]> data = new ArrayList(); 

    for (Iterator<IModule> m = modules.iterator() ; m.hasNext();) { 
     IModule module = m.next(); 
     for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ;) { 
      ICoursework coursework = c.next(); 
      String[] row = new String[6]; 

      row[0] = module.getModuleTitle(); 
      row[1] = module.getModuleCode(); 
      row[2] = coursework.getTitle(); 
      row[3] = coursework.dateToString(); 
      row[4] = coursework.getLecturer().getFirstName() 
        + coursework.getLecturer().getSecondName(); 
      row[5] = getSubmissionDetails(coursework, row); 

      data.add(row); 
     } 
    } 
    data.trimToSize(); 

    return data.toArray(); 
} 

這顯然不會編譯爲ArrayList.toArray()方法,我需要它返回一個對象[] []返回一個對象[]。

據我所知,因爲我有一個ArrayList的數組,這應該被轉換爲一個數組,然後包含數組。但事實並非如此。

如果你可以發佈一個有用的答案。謝謝。

+3

[的4372439重複(http://stackoverflow.com/questions/4372439/convert-arraylistobject-to-object?rq=1) – BevynQ 2013-03-21 00:29:43

回答

1

嘗試return data.toArray(new String[][]);

+0

首先它說,所述陣列需要的尺寸。但即使我放入任意維度,它仍然表示它需要Object [] []但找到String []。 – 2013-03-21 00:38:26

+0

對不起'return data.toArray(new String [] [])' – 2013-03-21 00:41:02

+0

工作表示感謝。它仍然要求尺寸。我是多維數組的新手,維度應該是什麼。目前我有新的String [data.size()] []。這是正確的嗎? – 2013-03-21 00:45:06

0

你不能那樣做。嘗試:

public Object[][] getData(ArrayList<IModule> modules) { 

    ArrayList<String[]> data = new ArrayList<String[]>(); 

    for (Iterator<IModule> m = modules.iterator() ; m.hasNext();) { 
     IModule module = m.next(); 
     for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ;) { 
      ICoursework coursework = c.next(); 
      String[] row = new String[6]; 

      row[0] = module.getModuleTitle(); 
      row[1] = module.getModuleCode(); 
      row[2] = coursework.getTitle(); 
      row[3] = coursework.dateToString(); 
      row[4] = coursework.getLecturer().getFirstName() 
        + coursework.getLecturer().getSecondName(); 
      row[5] = getSubmissionDetails(coursework, row); 

      data.add(row); 
     } 
    } 

    Object[][] arr = new Object[data.size()][6]; 

    for (int i = 0; i < data.size(); i++) { 
     String[] strings = data.get(i); 
     for (int j = 0; j < strings.length; j++) { 
      arr[i][j] = strings[j]; 
     } 
    } 

    return arr; 
}