我有一个mapper方法,它将名为 Claim 的实体列表迭代它们并映射到 CompensationDTO 并添加到列表中,但实体可以包含子实体列表类型也是声明,那些孩子也可以包含声明的列表,所以要迭代它们所有最好使用递归,但我不确定它应该如何写的
private List<CompensationDTO> mapToDTO(List<Claims> claims) {
List<CompensationsDTO> compensations = new ArrayList<>();
if (claims.isEmpty()) {
return new ArrayList<>();
}
for (Claim claim : claims) {
CompensationDTO compensationDTO = new CompensationDTO();
compensationDTO.setId(claim.getId());
compensationDTO.setAmount(claim.getAmount());
compensationDTO.setType(claim.getType());
compensations.add(compensationDTO);
mapToDTO(claim.getChildrenClaims());
}
return compensations;
}
我知道基本情况应该返回空列表,但我不知道在哪里放置递归函数调用mapToDTO(claim.getChildrenClaims());
答案 0 :(得分:0)
您是否尝试添加compansations.addAll()?:
private List<CompensationDTO> mapToDTO(List<Claims> claims) {
List<CompensationsDTO> compensations = new ArrayList<>();
if (claims.isEmpty()) {
return new ArrayList<>();
}
for (Claim claim : claims) {
CompensationDTO compensationDTO = new CompensationDTO();
compensationDTO.setId(claim.getId());
compensationDTO.setAmount(claim.getAmount());
compensationDTO.setType(claim.getType());
compensations.add(compensationDTO);
compensations.addAll(mapToDTO(claim.getChildrenClaims()));
}
return compensations;
}
答案 1 :(得分:0)
mapToDTO
返回List<CompensationDTO>
,您需要将这些元素添加到本地列表中。
List<CompensationDTO> rec = mapToDTO(claim.getChildrenClaims());
compensations.addAll(rec);