如何将数组列表转换为数组的数组



我正在做大学二年级的软件工程项目,遇到了一个问题。我对Java语言(和一般编程)相当陌生,所以有可能我只是不太理解语法。

我有一个方法,我想用它来返回一个Object类型数组的数组。这将在swing 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()方法返回一个Object[],而我需要它返回一个Object[][]。

据我所知,因为我有一个数组的ArrayList,这应该转换为一个数组,然后包含数组。但事实并非如此。

如果你能张贴一个答案,将是有帮助的。谢谢你。

尝试return data.toArray(new String[][]);

你不能那样做。试一试:

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;
}

相关内容

  • 没有找到相关文章