0

変数の一部のデータをArrayList<ArrayList<String>>csvファイルに保存したい。

この目的のために、CSV Writer も含まれている Ostermiller Utilities に注目しました。

問題は、csvwrite 機能が String、String[]、またはString[][]変数を必要とすることです。

ArrayList の ArrayList 内の行/列の数を事前に知りません。では、上記の (cswrite) 機能をどのように使用すればよいですか? String[]][]変数の固定サイズを宣言する必要はありませんか?

4

4 に答える 4

3

AString[][]は配列の配列にすぎません。たとえば、これは 2 次元配列を使用して「三角行列」を作成します。正方形である必要はありません (CSV はおそらく正方形であるべきですが、そうである必要はありません)。

String[][] matrix = new String[][5];    

matrix[0] = new String[1];
matrix[1] = new String[2];
matrix[2] = new String[3];
matrix[3] = new String[4];
matrix[4] = new String[5];

だからあなたの目的のために

String[][] toMatrix(ArrayList<ArrayList<String>> listOFLists) {
    String[][] matrix = new String[][listOfLists.size()];
    for(int i = 0; i < matrix.length; i++) {
        matrix[i]= listOfLists.get(i).toArray();
    }
    return matrix;
}

matrix[col][row]この場合、ではなくにあることに注意してくださいmatrix[row][col]。ライブラリのニーズによっては、この結果を転置する必要がある場合があります。

于 2012-09-06T21:00:31.803 に答える
0

テスト済みで動作中:

        String[][] arrayOfArraysOfString = new String[arrayListOfArrayListsOfStrings.size()][];

    for (int index = 0; index < arrayListOfArrayListsOfStrings.size(); index++) {
        ArrayList<String> arrayListOfString = arrayListOfArrayListsOfStrings.get(index);
        if (arrayListOfString != null) {
            arrayOfArraysOfString[index] = arrayListOfString.toArray(new String[arrayListOfString.size()]);
        }
    }
于 2012-09-06T21:11:14.633 に答える
0

最初に 1 つのサイズで配列の配列 (行列) を作成してから、リストのリストをトラバースしながら反復してデータを追加できます。

String[][] arr = new String[listOfList.size()][];
int i = 0;
for (List<String> row: listOfList) {
    arr[i++] = row.toArray(new String[row.size()]);
}
于 2012-09-06T21:03:34.250 に答える
0

多次元 ArrayList を多次元 String Array に変換する方法の例を次に示します。

package stuff;

import java.util.ArrayList;

パブリック クラス ArrayTest {

public static void main(String[] args) throws Exception {
    ArrayList<ArrayList<String>> multidimesionalArrayList = createArrayListContent(); 
    String[][] multidimensionalStringArray = new String[multidimesionalArrayList.size()][];
    int index = 0;

    for (ArrayList<String> strings : multidimesionalArrayList) {
        multidimensionalStringArray[index] = strings.toArray(new String[]{}); 
        index++;
    }

    System.out.println(multidimensionalStringArray);
}

private static ArrayList<ArrayList<String>> createArrayListContent() throws Exception  {
    ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>();
    result.add(createArrayList());
    result.add(createArrayList());
    result.add(createArrayList());
    result.add(createArrayList());
    result.add(createArrayList());
    return result;
}

private static ArrayList<String> createArrayList() throws Exception {
    ArrayList<String> list = new ArrayList<String>();
    list.add(String.valueOf(System.currentTimeMillis()));
    Thread.sleep(10);
    list.add(String.valueOf(System.currentTimeMillis()));
    Thread.sleep(10);
    list.add(String.valueOf(System.currentTimeMillis()));
    Thread.sleep(10);
    list.add(String.valueOf(System.currentTimeMillis()));
    Thread.sleep(10);
    list.add(String.valueOf(System.currentTimeMillis()));
    return list;
}

}

于 2012-09-06T21:17:02.267 に答える