我该如何重写它以使用lambda
如何重写以下内容以使用lambda而不是内部函数:我该如何重写它以使用lambda,lambda,java-8,Lambda,Java 8,如何重写以下内容以使用lambda而不是内部函数: List<ExtraService> extraServices = product.getServices().getExtraService().stream() .map(new Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService>() { @Ov
List<ExtraService> extraServices = product.getServices().getExtraService().stream()
.map(new Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService>() {
@Override
public ExtraService apply(com.novasol.bookingflow.api.entities.products.ExtraService es) {
ExtraService extraService = new ExtraService();
extraService.setServiceId(es.getServiceID());
extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
extraService.setServiceGroup(es.getServiceGroup().intValue());
extraService.setMaxUnits(es.getMaxUnits().intValue());
return extraService;
}
}).collect(toList());
List extraServices=product.getServices().getExtraService().stream()
.map(新函数(){
@凌驾
公共额外服务申请(com.novasol.bookingflow.api.entities.products.ExtraService es){
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceID());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
}).collect(toList());
类似
List<ExtraService> extraServices = product.getServices().getExtraService().stream()
.map( es -> {
ExtraService extraService = new ExtraService();
extraService.setServiceId(es.getServiceID());
extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
extraService.setServiceGroup(es.getServiceGroup().intValue());
extraService.setMaxUnits(es.getMaxUnits().intValue());
return extraService;
}
).collect(toList());
List extraServices=product.getServices().getExtraService().stream()
.map(es->{
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceID());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
).collect(toList());
?您有两个选择
首先-在方法中声明一个函数
Function<com.novasol.bookingflow.api.entities.products.ExtraService, ExtraService> toService = es -> {
ExtraService extraService = new ExtraService();
extraService.setServiceId(es.getServiceId());
extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
extraService.setServiceGroup(es.getServiceGroup().intValue());
extraService.setMaxUnits(es.getMaxUnits().intValue());
return extraService;
};
List<ExtraService> extraServices = product.getServices().getExtraService()
.stream()
.map(toService)
.collect(toList());
Function-to-service=es->{
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceId());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
};
List extraServices=product.getServices().getExtraService()
.stream()
.map(toService)
.collect(toList());
第二个-声明一个执行转换的新方法,并使用对其的方法引用
private ExtraService toService(com.novasol.bookingflow.api.entities.products.ExtraService es) {
ExtraService extraService = new ExtraService();
extraService.setServiceId(es.getServiceId());
extraService.setPriceUnitCode(es.getPriceUnitCode().intValue());
extraService.setServiceGroup(es.getServiceGroup().intValue());
extraService.setMaxUnits(es.getMaxUnits().intValue());
return extraService;
}
public void yourCurrentMethod() {
List<ExtraService> extraServices = product.getServices().getExtraService()
.stream()
.map(this::toService)
.collect(toList());
...
}
private-ExtraService-to-service(com.novasol.bookingflow.api.entities.products.ExtraService-es){
外部服务外部服务=新的外部服务();
setServiceId(es.getServiceId());
setPriceUnitCode(es.getPriceUnitCode().intValue());
setServiceGroup(es.getServiceGroup().intValue());
setMaxUnits(es.getMaxUnits().intValue());
返回外部服务;
}
public-void-yourCurrentMethod(){
List extraServices=product.getServices().getExtraService()
.stream()
.map(此::toService)
.collect(toList());
...
}
另一个想法是创建一个复制构造函数,然后使用.map(ExtraService::new)
@AlexisC。有趣的一点-像这个的清洁度,并将在这里做一些实验:-)谢谢,这正是我想要的。谢谢你的回答:-)