2014-02-07 27 views
0

我有一個​​這是一個字符串列表中的每個元素在這個列表中也是一個List<String>。現在我想將我的數據放入csv表單中。爲此,我使用opencsv列表清單<String>到字符串有序字符串數組

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

我在執行我拿着,知道每子列表具有相同的長度,從每個子列表中選擇第一個元素並將其添加到數組中。爲什麼我得到這麼長的一排?

我很感謝你的回覆!

+0

@Dukeling你能推薦任何代碼結構嗎? – user2051347

回答

1

因爲你的循環不正確。您在每個內部循環中構造了一個新的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)); 
} 
+0

Thx爲您的答案!我用你的代碼,但是我沒有得到任何輸出... – user2051347

+1

@ user2051347:我忘記了'data.add(array);',對不起。我更正了我的代碼。 –

+0

Thx您的回覆!然而,我目前正在獲得的是resuls專欄明智,而不是逐行。任何建議如何可以解決?我真的很感激你的回覆! – user2051347

相關問題