Java CSV CsvUtil
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${cn.hutool.version}</version>
</dependency>
package com.lcpsky.common.csv;
import cn.hutool.core.text.csv.CsvBaseReader;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvRow;
import com.google.common.collect.Lists;
import com.lcpsky.fund.bo.Fund;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
/**
* @author: Administrator
* @date: 2023/03/16 9:32
* @description:
*/
public class CsvUtil {
private static final String YMD_PTN = "yyyyMMdd";
private static String ROW_DATE = "日期";
public static List<Fund> convet(CsvBaseReader csvBaseReader){
List<Fund> res = Lists.newArrayList();
Iterator<CsvRow> iterator = ((CsvReader) csvBaseReader).iterator();
List<String> dateList = Lists.newArrayList();
iterator.forEachRemaining(row->{
List<String> rawList = row.getRawList();
if (ROW_DATE.equals(rawList.get(0))){
dateList.addAll(rawList.subList(1,rawList.size()));
}else{
String source = rawList.get(0);
List<String> datas = rawList.subList(1,rawList.size());
for (int i = 0,len = dateList.size(); i < len; i++) {
Double mount = Double.parseDouble(datas.get(i));
Fund fund = null;
try {
fund = Fund.builder().mount(mount).source(source).acquisitionTime(DateUtils.parseDate(dateList.get(i),YMD_PTN)).build();
res.add(fund);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
});
res.sort(Comparator.comparing(Fund::getAcquisitionTime).thenComparing(Fund::getSource));
return res;
}
}