在 dto 到 bean 的转换中,
仅当 dto 在 bean 中找不到时,或者 dto 的 id 为空时,我才尝试添加 dto
我使用没有匹配的流。
当我尝试添加许多汽车时,仅添加第一辆
List<Car> cars = bean.getCar();
List<CarDto> carsDto = dto.getCar();
for (CarDto carDto : carsDto) {
if (cars.stream().noneMatch(e -> Objects.equals(e.getId(), carDto.getId()) || carDto.getId()==null )) {
//get car from bd....
bean.addCar(car);
}
}
最佳答案
在 noneMatch
中设置 carDto.getId()==null
条件将阻止您获取具有 null id 的 CarDto
。
您可以将其更改为
if (carDto.getId() == null
|| cars
.stream()
.noneMatch(e -> Objects.equals(e.getId(), carDto.getId())))
更新:
感谢 Holger@ 的建议:您可以将第二个 if
条件简化为(并且不需要使用 Objects.equals
因为 carDto.getId
不能为空。
cars.stream()
.map(Car::getId)
.noneMatch(carDto.getId()::equals)
关于Java流不匹配多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50238933/