如何解决使用 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 举报,一经查实,本站将立刻删除。