【问题标题】:How do you convert an ArrayList to an array of arrays?如何将 ArrayList 转换为数组数组?
【发布时间】:2013-03-10 08:38:45
【问题描述】:

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

我有一个方法,我想用它来返回一个 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() 方法返回一个 Object[],我需要它返回一个 Object[][]。

据我了解,因为我有一个数组的 ArrayList,所以应该将它转换为一个包含数组的数组。但事实并非如此。

如果您能发布一个有用的答案。谢谢。

【问题讨论】:

标签: java arrays collections multidimensional-array arraylist


【解决方案1】:

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

【讨论】:

  • 首先它说数组需要一个维度。但即使我输入任意维度,它仍然说它需要 Object[][] 但找到 String[]。
  • 对不起return data.toArray(new String[][])
  • 谢谢。它仍然要求尺寸。我是多维数组的新手,维度应该是什么。目前我有新的字符串 [data.size()][]。那是正确的吗?
  • 谢谢。帮了大忙:)
【解决方案2】:

你不能那样做。试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2010-09-16
    • 2013-04-27
    • 2013-05-11
    • 1970-01-01
    • 2015-05-16
    • 2013-04-14
    相关资源
    最近更新 更多