2013-03-21 68 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; 
}