List <string>到字符串有序字符串数组</string>的列表

时间:2014-02-07 08:22:49

标签: java algorithm list csv opencsv

我的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();

我的数据应该是这样的:

enter image description here

然而,我的实现给了我:

enter image description here

在我的实现中,我知道每个子列表具有相同的长度,从每个子列表第一个元素并将其添加到数组。我为什么要排长队?

感谢您的回复!

1 个答案:

答案 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));
}