Создайте список dto для списка сущностей с помощью Java 8

#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», должны быть неизменными.