繁体   English   中英

java-如何转换ArrayList <ArrayList<String> &gt;转换为String []] []

[英]java- how to convert a ArrayList<ArrayList<String>> into String[]][]

我想将ArrayList<ArrayList<String>>变量中的一些数据存储到csv文件中。

为此,我将Ostermiller Utilities归零,该工具还包括CSV Writer。

问题是,csvwrite功能需要String,String []或String[][]变量。

我不会事先知道我的arraylist的ArrayList中的行数/列数-那么如何使用以上(cswrite)功能? 我不必为String[]][]变量声明固定大小吗?

String[][]只不过是一个数组数组。 例如,这使用2d数组生成“三角矩阵”。 它不必是正方形(尽管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] 您可能需要转置此结果,具体取决于您的库的需求。

您可以先创建一个具有一个大小的数组(矩阵),然后遍历列表的列表进行迭代并添加数据

String[][] arr = new String[listOfList.size()][];
int i = 0;
for (List<String> row: listOfList) {
    arr[i++] = row.toArray(new String[row.size()]);
}

经过测试和工作:

        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()]);
        }
    }

这是一个如何将多维ArrayList转换为多维字符串数组的示例。

package stuff;

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM