如何使用OpenCSV基于某个id将多个单元格值映射到一个Javabean?
我有如下的csv数据 我正在使用注释将csv数据转换为java对象 我的Pojo类如下所示:如何使用OpenCSV基于某个id将多个单元格值映射到一个Javabean?,java,csv,opencsv,Java,Csv,Opencsv,我有如下的csv数据 我正在使用注释将csv数据转换为java对象 我的Pojo类如下所示: public class TeamEntity { @CsvBindByName(column = "team_id") private String teamId; @CsvBindByName(column = "team_name") private String teamName; @CsvBind
public class TeamEntity {
@CsvBindByName(column = "team_id")
private String teamId;
@CsvBindByName(column = "team_name")
private String teamName;
@CsvBindByName(column = "funds")
private int fund;
@CsvBindByName(column = "cars")
private String carId;
public TeamEntity() {
}
public TeamEntity(String teamId, String teamName, int fund, String carId) {
this.teamId = teamId;
this.teamName = teamName;
this.fund = fund;
this.carId = carId;
}
public String getTeamId() {
return teamId;
}
public void setTeamId(String teamId) {
this.teamId = teamId;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public int getFund() {
return fund;
}
public void setFund(int fund) {
this.fund = fund;
}
public String getCarId() {
return carId;
}
public void setCarIds(String carId) {
this.carId = carId;
}
}
List<TeamEntity> teamEntities = new ArrayList<TeamEntity>();
try(Reader reader = Files.newBufferedReader(Paths.get(uri))) {
CsvToBean<TeamEntity> csvToBean = new CsvToBeanBuilder<TeamEntity>(reader)
.withType(TeamEntity.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
teamEntities= csvToBean.parse();
} catch (IOException e) {
e.printStackTrace();
}
我是这样装订的:
public class TeamEntity {
@CsvBindByName(column = "team_id")
private String teamId;
@CsvBindByName(column = "team_name")
private String teamName;
@CsvBindByName(column = "funds")
private int fund;
@CsvBindByName(column = "cars")
private String carId;
public TeamEntity() {
}
public TeamEntity(String teamId, String teamName, int fund, String carId) {
this.teamId = teamId;
this.teamName = teamName;
this.fund = fund;
this.carId = carId;
}
public String getTeamId() {
return teamId;
}
public void setTeamId(String teamId) {
this.teamId = teamId;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public int getFund() {
return fund;
}
public void setFund(int fund) {
this.fund = fund;
}
public String getCarId() {
return carId;
}
public void setCarIds(String carId) {
this.carId = carId;
}
}
List<TeamEntity> teamEntities = new ArrayList<TeamEntity>();
try(Reader reader = Files.newBufferedReader(Paths.get(uri))) {
CsvToBean<TeamEntity> csvToBean = new CsvToBeanBuilder<TeamEntity>(reader)
.withType(TeamEntity.class)
.withIgnoreLeadingWhiteSpace(true)
.build();
teamEntities= csvToBean.parse();
} catch (IOException e) {
e.printStackTrace();
}
但是,我想合并具有相同团队id的行,并得到类似的结果
String team_name;
List<String> car_id;
double funds;
String团队名称;
列出车号;
双重基金;
实现这一目标的最佳方式是什么?有没有办法使用注释来实现这一点?没有OpenCSV注释来处理这种类型的“分组依据”功能。在我看来,最简单的方法是迭代您的
teamEntities
列表,并构建一个新的列表,收集沿途的车辆ID子列表。这将需要您创建一个新实体,其中字符串car\u id
字段将替换为列表car\u id
字段。在这个新类中,您也不需要任何setter,只需要getter。