当ADto中有sId字段,写一个共通方法,参数为List<ADto>、ADto.class、filePath,将List<ADto>出力到csv文件中,且sId只出力一次
时间: 2023-12-14 18:36:00 浏览: 30
可以通过以下方法实现:
```java
public static void writeToCSV(List<ADto> list, Class<ADto> clazz, String filePath) {
try {
FileWriter writer = new FileWriter(filePath);
CSVWriter csvWriter = new CSVWriter(writer);
// 获取ADto类的所有字段
Field[] fields = clazz.getDeclaredFields();
// 遍历List
for (int i = 0; i < list.size(); i++) {
ADto obj = list.get(i);
// 判断是否需要输出sId
if (i == 0 || !obj.sId.equals(list.get(i - 1).sId)) {
// 输出sId
String[] line = new String[fields.length];
for (int j = 0; j < fields.length; j++) {
Field field = fields[j];
if (field.getName().equals("sId")) {
field.setAccessible(true);
Object value = field.get(obj);
line[j] = value == null ? "" : value.toString();
break;
}
}
csvWriter.writeNext(line);
}
// 输出其它字段
String[] line = new String[fields.length];
for (int j = 0; j < fields.length; j++) {
Field field = fields[j];
field.setAccessible(true);
Object value = field.get(obj);
line[j] = value == null ? "" : value.toString();
}
csvWriter.writeNext(line);
}
csvWriter.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
```
使用方法如下:
```java
List<ADto> list = new ArrayList<>();
// 添加ADto对象到list中
writeToCSV(list, ADto.class, "output.csv");
```
该方法会根据sId字段的值在csv文件中输出一次,其它字段每次都输出。如果sId值相同,则不会重复输出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)