使用java8流api将一个对象转换为另一个对象

问题描述 投票:-1回答:2

我正在开发一个SpringBoot项目。

我有一个Car模型类别:

public class Car {
   private String plateNumber;
   private CarType type;
   private String brand
}

有一个CarType枚举:

public enum CarType {
   HATCH_BACK, SEDAN, SUV
}

在我的DTO层中,有一个CarDTO类:

public class CarDTO {
       private String plateNumber;
       private String type;
       private String brand
}

([CarCarDTO之间的唯一区别是CarDTO中的type属性是String,而在Car中的type属性是CarType

在控制器中,我在请求有效负载中获得了CarDTO列表:

List<CarDTO> carsFromReq = request.getCars();

我想从List<Car>中获得一个List<CarDTO>,如何使用Java8流API实现它?

spring-boot java-8 dto
2个回答
0
投票

如果您使用龙目岛的@Builder注释,则可以使用map

carsFromReq.stream()
    .map(dto -> Car.builder()
        .plateNumber(dto.getPlateNumber())
        .type(CarType.valueOf(dto.getType())
        .brand(dto.getBrand())
        .build())
    .collect(Collectors.toList());

0
投票

创建CarDTO的全参数构造函数。

您可以使用@AllArgsConstructor创建所有参数构造函数然后在.map()

中创建CarDTO对象
List<CarDTO> carsFromReq = request.getCars().stream()
    .map(car-> new CarDTO(car.getPlateNumber(),car.getType().name(),car.getBrand()))
    .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.