📜  将arraylist转换为csv文件java(1)

📅  最后修改于: 2023-12-03 15:39:13.832000             🧑  作者: Mango

将 ArrayList 转换为 CSV 文件 Java

如果你有一个 ArrayList 存储了数据,并且你想将这些数据导出为 CSV 文件,本教程将向你展示如何在 Java 中实现。

第一步:引入依赖

我们需要引入 Apache Commons CSV 依赖来帮助我们写入 CSV 文件。

在 Maven 项目中,可以将以下依赖添加到 pom.xml 中。

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.8</version>
</dependency>
第二步:构建 CSVWriter

我们要使用 CSVWriter 类来写入 CSV 文件。首先,我们需要构建 CSVWriter ,指定输出流和 CSV 配置。

// 创建 CSVWriter 对象
CSVWriter writer = new CSVWriter(new FileWriter("output.csv"), ',', CSVWriter.NO_QUOTE_CHARACTER);

// 将 ArrayList 转换为二维数组
String[][] data = new String[arrayList.size()][];

// 遍历 ArrayList 中的数据,并将其添加到二维数组中
for (int i = 0; i < arrayList.size(); i++) {
    data[i] = arrayList.get(i).split(",");
}

// 写入 CSV 文件
writer.writeAll(Arrays.asList(data));

我们首先创建了一个 CSVWriter 对象,并用 FileWriter 指定输出文件的路径。我们设置逗号作为列之间的分隔符,以及不用添加引号字符。

接下来,我们需要将 ArrayList 转换为二维数组。我们可以通过使用 ArrayList 的 size() 方法和 get() 方法循环遍历该列表中的每个元素,并将它们添加到新的数组中。

最后,我们调用 CSVWriter 对象的 writeAll() 方法,并将整个二维数组(当作一个列表)作为参数。这会将数组数据写入 CSV 文件。

第三步:关闭 CSVWriter 对象

使用完 CSVWriter 后,记得要将其关闭以释放资源。

// 关闭 CSVWriter 对象
writer.close();

完整代码示例

下面是将 ArrayList 转换为 CSV 文件的完整代码示例。

import com.opencsv.CSVWriter;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListToCSV {

    public static void main(String[] args) throws IOException {

        // 创建 ArrayList 存储数据
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("John,Smith,john.smith@gmail.com,Los Angeles,USA");
        arrayList.add("Chris,Brown,chris.brown@hotmail.com,New York,USA");
        arrayList.add("Paul,Johnson,paul.johnson@gmail.com,London,UK");

        // 创建 CSVWriter 对象
        CSVWriter writer = new CSVWriter(new FileWriter("output.csv"), ',', CSVWriter.NO_QUOTE_CHARACTER);

        // 将 ArrayList 转换为二维数组
        String[][] data = new String[arrayList.size()][];

        // 遍历 ArrayList 中的数据,并将其添加到二维数组中
        for (int i = 0; i < arrayList.size(); i++) {
            data[i] = arrayList.get(i).split(",");
        }

        // 写入 CSV 文件
        writer.writeAll(Arrays.asList(data));

        // 关闭 CSVWriter 对象
        writer.close();
    }
}

该程序将生成名为 output.csv 的 CSV 文件,其中包含以下内容:

John,Smith,john.smith@gmail.com,Los Angeles,USA
Chris,Brown,chris.brown@hotmail.com,New York,USA
Paul,Johnson,paul.johnson@gmail.com,London,UK