【问题标题】:How to write a List of ArrayLists to CSV format in Java如何在 Java 中将 ArrayLists 列表写入 CSV 格式
【发布时间】:2014-07-16 17:26:55
【问题描述】:

我有以下格式的数据:

   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[ ] 将 cast 'ArrayList each' 键入 String[] 时,如下所示,我收到运行时类型转换错误:

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

谁能告诉我哪里出错了?

【问题讨论】:

    标签: java csv arraylist casting


    【解决方案1】:

    您不能将Object[] 转换为String[],因为Object[] 可以包含Dog、Cat、Integer 等。

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

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

    【讨论】:

    • 你不应该做new String[list.size()]吗?
    • @All 这个问题是需要两个数组。
    • @Danny 是的也正确或使用list.toArray(new String[0]);
    • @Braj 任何小于列表大小的数组都将被丢弃并创建一个新数组。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      编辑:哎呀,他们打败了我!

      【讨论】:

        猜你喜欢
        • 2017-05-21
        • 1970-01-01
        • 2014-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多