java8实现:将LIst<ADto>出力为csv文件,表头为ADto的字段
时间: 2023-12-10 13:37:36 浏览: 76
围棋
下面是一个简单的Java 8代码示例,将包含ADto对象的List转换为CSV文件:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CsvWriter {
private static final String CSV_SEPARATOR = ",";
public static void write(String fileName, List<ADto> list) throws IOException {
FileWriter writer = new FileWriter(fileName);
// 写入表头
writer.append(String.join(CSV_SEPARATOR, Arrays.asList("field1", "field2", "field3")));
writer.append("\n");
// 写入数据行
list.stream().forEach(a -> {
try {
writer.append(String.join(CSV_SEPARATOR, Arrays.asList(
a.getField1(), a.getField2(), a.getField3())));
writer.append("\n");
} catch (IOException e) {
e.printStackTrace();
}
});
writer.flush();
writer.close();
}
public static void main(String[] args) throws IOException {
List<ADto> list = new ArrayList<>();
list.add(new ADto("val1", "val2", "val3"));
list.add(new ADto("val4", "val5", "val6"));
CsvWriter.write("output.csv", list);
}
}
class ADto {
private String field1;
private String field2;
private String field3;
public ADto(String field1, String field2, String field3) {
this.field1 = field1;
this.field2 = field2;
this.field3 = field3;
}
public String getField1() {
return field1;
}
public String getField2() {
return field2;
}
public String getField3() {
return field3;
}
}
```
在这个示例中,我们首先定义了一个常量CSV_SEPARATOR作为CSV文件中的分隔符。然后我们定义了一个静态方法write,该方法接受一个文件名和一个List<ADto>对象作为参数。在该方法中,我们首先创建一个FileWriter对象来写入数据到CSV文件中。我们先写入表头,然后使用Java 8的流式API将List中的每个ADto对象转换为一行CSV格式的数据。最后,我们调用flush和close方法来关闭文件。
在main方法中,我们创建一个包含两个ADto对象的List,并将其写入output.csv文件中。你可以根据需要修改字段名称和文件名。
阅读全文