读取带有两个标题的 csv 数据的最佳方法是什么。
try (CSVReader csvReader = new CSVReaderBuilder(new InputStreamReader(file.getInputStream()))
.withCSVParser(new CSVParserBuilder().withSeparator(',').build())
.build()) {
HeaderColumnNameMappingStrategy<TemperatureData> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(TemperatureData.class);
CsvToBean<TemperatureData> csvToBean = new CsvToBeanBuilder<TemperatureData>(csvReader)
.withMappingStrategy(strategy)
.withSkipLines(2)
.build();
List<TemperatureData> dataList = csvToBean.parse();
Map<String, List<TemperatureData>> groupedData = new HashMap<>();
但是这样我只得到第二个带有值的标题
数据就像
id,id,id,id,id,subid,subid,subid,subid,subid
pname,pname,pname,pname,pname,pname,pname,pname,pname,pname,
value,value,value,value,value,value,value,value,value,value,
我尝试获得类似的输出
Id | Id |
pname | pname |
value | value |
抱歉我没有正确解释
问题在于输出 输出
CsvData{, OC='THHS5', IC='IC S', 日期='null', 时间='null', 计数器='null', THHS='null', TH1='null', TH2='空', TH3='空', ICS='空'} CsvData{, OC='18.1', IC='停止', date='null', time='null', counter='null', THHS='null', TH1='null', TH2='null' , TH3='空',ICS='空'}
我正在尝试这样
for (TemperatureData data : dataList) {
String key = data.getOC078();
if (!groupedData.containsKey(key)) {
groupedData.put(key, new ArrayList<>());
}
groupedData.get(key).add(data);
}
for (Map.Entry<String, List<TemperatureData>> entry : groupedData.entrySet()) {
System.out.println("Key: " + entry.getKey());
for (TemperatureData data : entry.getValue()) {
System.out.println(data);
}
System.out.println("------------------------------");
}
温度数据类
@CsvBindByName(column = "OC(062)")
private String OC62;
@CsvBindByName(column = "IC(012)")
private String IC;
@CsvBindByName(column = "Date")
private String date;
@CsvBindByName(column = "Time")
private String time;
@CsvBindByName(column = "Counter")
private String counter;
@CsvBindByName(column = "TH1")
private String _TH1;
@CsvBindByName(column = "TH2")
private String _TH2;
@CsvBindByName(column = "TH3")
private String _TH3;
@CsvBindByName(column = "IC S")
private String _ICS;
@Override
public String toString() {
return "CsvData{" +
", OC='" + OC62 + '\'' +
", IC='" + IC + '\'' +
", date='" + date + '\'' +
", time='" + time + '\'' +
", counter='" + counter + '\'' +
", THHS='" + _THHS + '\'' +
", TH1='" + _TH1 + '\'' +
", TH2='" + _TH2 + '\'' +
", TH3='" + _TH3 + '\'' +
", ICS='" + _ICS + '\'' +
'}';
}