Java:2D列表转换为CSV

Java:2D列表转换为CSV,java,csv,Java,Csv,我在Java中有一个2D列表 List<List<String>> listOflists 我想将其转换为CSV文件,以“,”分隔,但每个列表对应一列,如下所示: 10,Accounting,122 20,Research,124 30,Sales,123 40,Operations,167 事实上,我稍后将使用这个csv文件写入mysql 现在我使用HSSFWorkbook(),然后将其设置为excel,然后将excel转换为csv,然后将其导出到mysql,最后

我在Java中有一个2D列表

List<List<String>> listOflists
我想将其转换为CSV文件,以“,”分隔,但每个列表对应一列,如下所示:

10,Accounting,122
20,Research,124
30,Sales,123
40,Operations,167 
事实上,我稍后将使用这个csv文件写入mysql

现在我使用HSSFWorkbook(),然后将其设置为excel,然后将excel转换为csv,然后将其导出到mysql,最后删除excel和csv。我认为这是无效的

那么,如何将
列表
转换为“,”分离的CSV文件

谢谢

最终字符串lineSeparator=System.getProperty(“line.separator”);
final String lineSeparator = System.getProperty("line.separator");

// setup the header line
StringBuilder sb = new StringBuilder("your,header,line,stuff");
sb.append(lineSeparator);

// now append your data in a loop
for (i = 0; i < list1.size(); i++) {
    sb.append(list1.get(i));
    sb.append(",");
    sb.append(list2.get(i));
    sb.append(",");
    sb.append(list3.get(i));
    sb.append(lineSeparator);
}

// now write to file
Files.write(Paths.get("path/to/where/you/want/output.csv"), sb.toString().getBytes());
//设置标题行 StringBuilder sb=新的StringBuilder(“您的、标题、行、内容”); sb.append(行分隔符); //现在将数据附加到循环中 对于(i=0;i
int innerListSize=listOfLists.get(0.size();
对于(i=0;i

请注意,每行末尾都有一个逗号。可以通过将optimized for循环更改为使用迭代器来删除它,并且在迭代器.hasNext()为false时不向文件写入逗号。

您的内部列表类型为
String
,但您给出的示例不是。我认为它不值得-1,因为您怀疑,是的,我正在使用
list
,并且它是有效的。所有这些数字也是字符串:(就是这样。我不是那个-1你。我只是发表了评论。哦,好吧,无论如何谢谢你的评论。我真的希望当人们这样做-1时,也解释为什么-1,如果提问者能够纠正自己。你可能想通读一遍。格式很简单,但是你应该为一些边缘情况编码。字符串中的引号和逗号,锯齿列表,linux行尾。。。
final String lineSeparator = System.getProperty("line.separator");

// setup the header line
StringBuilder sb = new StringBuilder("your,header,line,stuff");
sb.append(lineSeparator);

// now append your data in a loop
for (i = 0; i < list1.size(); i++) {
    sb.append(list1.get(i));
    sb.append(",");
    sb.append(list2.get(i));
    sb.append(",");
    sb.append(list3.get(i));
    sb.append(lineSeparator);
}

// now write to file
Files.write(Paths.get("path/to/where/you/want/output.csv"), sb.toString().getBytes());
int innerListSize = listOfLists.get(0).size();

for (i = 0; i < innerListSize; i++) {
    for (List<String> innerList : listOfLists) {
        Files.write(innerList.get(i) + ",");
    }
    Files.write('\n');
}