微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java 8 将 dtos 列表生成到实体列表

如何解决使用 Java 8 将 dtos 列表生成到实体列表

我是 Java 新手。我有 dto 对象列表,我需要通过遍历 dtos 列表将其转换为实体列表。

我不应该使用模型映射器或 MapStruct 或 BeanUtils。我需要以 Java 方式执行此操作,但不确定如何同时迭代两个列表。

public class AddressDto {
    private String unitNo;
    private String floorNo;
    private String buildingName;
    private String areaName;
    //getters and setters
    }
public class AddressEntity {
    private String unitNo;
    private String floorNo;
    private String buildingName;
    private String areaName;
    //getters and setters
    }
public void getAddress() {
        
        List<AddressDto> addressDtoList=new ArrayList<>();
        addressDtoList.add(new AddressDto("174","7","grove","BR"));
        
        List<AddressEntity> addressEntityList=new ArrayList<>();
        addressEntityList.add(new AddressEntity("28","13","Green","Tampa"));
        
        List<AddressEntity> addressEntityListResult=convertDtoToEntity(addressDtoList);
        
    }
    
    private List<AddressEntity> convertDtoToEntity(List<AddressDto> aDto) {

        List<AddressEntity> newAddressEntityList = null;

        for (AddressDto dto : aDto) {

          //Generate and Return the newAddressEntityList by replacing Green with grove and BR with Tampa
        }

        return newAddressEntityList;
    }

它应该只用格罗夫代替格林,用坦帕代替 BR。其余对象如“28”、“13”应保持不变。

解决方法

如今,Java 的方式是使用 Stream API

这里有一段关于如何将 List<AddressDto> 转换为 List<AddressEntity>

  private static List<AddressEntity> convertDtoToEntity(List<AddressDto> aDto) {
    return aDto.stream()
        .map(dto -> new AddressEntity(dto.getUnitNo(),dto.getFloorNo(),dto.getBuildingName(),dto.getAreaName()))
        .collect(Collectors.toList());
  }

传递给 .map 方法的函数负责将流的每个元素从 AddressDto 转换为 AddressEntity。

,

您收到了一个很好的答案,但这里有另一种方法:

private List<AddressEntity> convertDtoToEntity(List<AddressDto> aDto) {
    List<AddressEntity> newAddressEntityList = new ArrayList<>();

    for (AddressDto dto : aDto) {
        AddressEntity addressEntity = new AddressEntity(
                dto.getUnitNo(),dto.getAreaName()
        );
        
        newAddressEntityList.add(addressEntity);
    }

    return newAddressEntityList;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。