#java #spring-boot #arraylist #foreach #java-8
Вопрос:
Я новичок на Яве. У меня есть список объектов dto, и мне нужно преобразовать его в список сущностей, выполнив итерацию по списку dto.
Я не должен использовать model mapper, 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;
}
Он должен заменить зеленый на Grove, а BR-только на Tampa. Остальные объекты, такие как «28», «13», должны быть неизменными.
Ответ №1:
В настоящее время Java-это использование потокового API.
Вот фрагмент о том, как преобразовать a List<AddressDto>
в a 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.
Комментарии:
1. Он должен заменить зеленый на Grove, а BR-только на Tampa. Остальные объекты, такие как «28», «13», должны быть неизменными.
Ответ №2:
Вы получили отличный ответ, но вот еще один способ сделать это:
private List<AddressEntity> convertDtoToEntity(List<AddressDto> aDto) {
List<AddressEntity> newAddressEntityList = new ArrayList<>();
for (AddressDto dto : aDto) {
AddressEntity addressEntity = new AddressEntity(
dto.getUnitNo(),
dto.getFloorNo(),
dto.getBuildingName(),
dto.getAreaName()
);
newAddressEntityList.add(addressEntity);
}
return newAddressEntityList;
}
Комментарии:
1. Он должен заменить зеленый на Grove, а BR-только на Tampa. Остальные объекты, такие как «28», «13», должны быть неизменными.