java8实现:将LIst<ADto>出力为csv文件,自动将ADto的字段名出力为表头
时间: 2023-12-10 10:37:38 浏览: 84
可以使用Java 8中的流和Lambda表达式来实现将List<ADto>输出为CSV文件,并自动将ADto的字段名输出为表头。具体实现如下:
```java
public class CsvWriter {
public static void writeCsv(List<ADto> list, String filename) throws IOException {
try (PrintWriter writer = new PrintWriter(new FileWriter(filename))) {
// 输出表头
writer.println(String.join(",", ADto.getFields()));
// 输出数据
list.stream()
.map(ADto::toString)
.forEach(writer::println);
}
}
}
public class ADto {
private String field1;
private int field2;
private double field3;
public static List<String> getFields() {
return Arrays.asList("field1", "field2", "field3");
}
// 省略构造函数、getter和setter方法
@Override
public String toString() {
return String.format("%s,%d,%.2f", field1, field2, field3);
}
}
```
在上面的代码中,CsvWriter类的writeCsv方法接收一个List<ADto>和一个文件名,然后使用PrintWriter将数据写入文件中。首先输出表头,即调用ADto类的getFields方法得到所有字段名并用逗号拼接成一行;然后使用流的map方法将每个ADto对象转换成字符串形式;最后使用forEach方法将每个字符串写入文件中。ADto类的toString方法用于将一个ADto对象转换成逗号分隔的字符串形式,方便输出到CSV文件中。
阅读全文