我想将ArrayList<ArrayList<String>>
变量中的一些数据存储到csv文件中。
为此,我专注于Ostermiller Utilities--其中包括一个CSV Writer。
问题是,csvwrite功能需要String,String []或String[][]
变量。
我事先不知道我的ArrayList of arraylists中的行/列数 - 所以我如何使用上面的(cswrite)功能?我不必声明String[]][]
变量的固定大小吗?
答案 0 :(得分:3)
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]
。您可能需要转换此结果,具体取决于库的需求。
答案 1 :(得分:0)
您可以先创建一个大小为一的数组(矩阵)数组,然后在遍历列表列表时迭代并添加数据
String[][] arr = new String[listOfList.size()][];
int i = 0;
for (List<String> row: listOfList) {
arr[i++] = row.toArray(new String[row.size()]);
}
答案 2 :(得分: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()]);
}
}
答案 3 :(得分:0)
以下是如何将multidimesional ArrayList转换为多维字符串数组的示例。
package stuff;
import java.util.ArrayList;
public class 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;
}
}