簡體   English   中英

如何將ArrayList轉換為數組數組?

[英]How do you convert an ArrayList to an array of arrays?

我正在做我的第二年大學軟件工程項目,遇到了一個問題。 我對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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM