Java映射器以列表

时间:2017-03-30 06:43:00

标签: java recursion mapper

我有一个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());

2 个答案:

答案 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);