我的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();
我的数据应该是这样的:
然而,我的实现给了我:
在我的实现中,我知道每个子列表具有相同的长度,从每个子列表第一个元素并将其添加到数组。我为什么要排长队?
感谢您的回复!
答案 0 :(得分:1)
因为你的循环不正确。您在每个内部循环中构造了一个新的String数组,因此每个数组只有on元素。 请尝试以下代码:
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));
}