我正在开发一个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
}
([Car
和CarDTO
之间的唯一区别是CarDTO
中的type
属性是String
,而在Car
中的type
属性是CarType
。
在控制器中,我在请求有效负载中获得了CarDTO列表:
List<CarDTO> carsFromReq = request.getCars();
我想从List<Car>
中获得一个List<CarDTO>
,如何使用Java8流API实现它?
如果您使用龙目岛的@Builder
注释,则可以使用map
:
carsFromReq.stream()
.map(dto -> Car.builder()
.plateNumber(dto.getPlateNumber())
.type(CarType.valueOf(dto.getType())
.brand(dto.getBrand())
.build())
.collect(Collectors.toList());
创建CarDTO的全参数构造函数。
您可以使用@AllArgsConstructor
创建所有参数构造函数然后在.map()
List<CarDTO> carsFromReq = request.getCars().stream()
.map(car-> new CarDTO(car.getPlateNumber(),car.getType().name(),car.getBrand()))
.collect(Collectors.toList());