如何在Java中将ArrayLists列表写入CSV格式

时间:2014-07-16 17:26:56

标签: java csv arraylist casting

我有以下格式的数据:

   List<ArrayList<String>>

我想将其写入CSV。以下是我的代码:

private static void writeToCSV(List<ArrayList<String>> csvInput) throws IOException{

String csv = "C:\\output.csv";
CSVWriter writer = null;

try {
    writer = new CSVWriter(new FileWriter(csv));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

for(ArrayList<String> each: csvInput){
    writer.writeNext(each);
}


writer.close();
}//end of writeTOCSV

方法'writeNext'只允许String []作为参数。当我尝试使用Object []将'ArrayList each'类型转换为String []时,如下所示,我得到运行时类型转换错误:

   Object[] eachTemp = each.toArray();
   writer.writeNext((String[]) eachTemp);

有谁能告诉我哪里出错了?

3 个答案:

答案 0 :(得分:2)

您正在将列表转换为对象数组。要创建字符串数组,请执行以下操作:

for(ArrayList<String> each: csvInput){
    writer.writeNext(each.toArray(new String[each.size()]));
}

答案 1 :(得分:2)

您无法将Object[]投射到String[],因为Object[]可以包含Dog,Cat,Integer等。

你应该使用重载的List#toArray(T[])方法。

List<String> list = new ArrayList<String>();
String[] array = list.toArray(new String[] {});

答案 2 :(得分:2)

尝试使用toArray的参数化版本 -

    String[] eachTemp = each.toArray(new String[each.size()]);
    writer.writeNext(eachTemp);

编辑:oops他们打败了我!