我有一个 resultList
这是一个字符串列表,此列表中的每个元素也是 List<String>
.现在我想将我的数据放入 csv 表中。为此,我正在使用 opencsv .
List<String[]> data = new ArrayList<String[]>();
for(int m = 0; m < resultList.get(0).size(); m++) {
for (int i = 0; i < resultList.size(); i++) {
data.add(new String[] {resultList.get(i).get(m).toString()});
}
}
writer.writeAll(data);
//close Writer
writer.close();
我的数据应该是这样的:
但是,我的实现给了我:
在我的实现中,我知道每个子列表都具有相同的长度,从每个子列表中获取第一个元素并将其添加到数组中。为什么我要排这么长的一排?
感谢您的回复!
最佳答案
因为你的循环不正确。您在每个内部循环中构造了一个新的 String 数组,因此每个数组只有一个元素。 试试下面的代码:
List<String[]> data = new ArrayList<String[]>();
for(List<String> strlist : resultList) {
String[] array = new String[strlist.size()];
int offset = 0;
for(String s : strlist) {
array[offset ++] = s;
}
data.add(array);
}
==============编辑如下==================
我已经重新排序循环以满足您的输出要求。此外,还提供了样本输入来测试算法。
List<List<String>> resultList = new ArrayList<List<String>>();
for (int i = 1; i <= 9; i++) {
List<String> innerList = new ArrayList<String>();
resultList.add(innerList);
for (int j = 1; j <= 9; j++) {
innerList.add(j + "");
}
}
List<String[]> data = new ArrayList<String[]>();
for(int m = 0; m < resultList.get(0).size(); m++) {
String[] array = new String[resultList.size()];
for (int i = 0; i < resultList.size(); i++) {
array[i] = resultList.get(i).get(m).toString();
}
data.add(array);
}
for(String[] array : data) {
System.out.println(Arrays.toString(array));
}
关于java - List<String> 的列表到字符串有序的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21622660/