Java流不匹配多个条件

标签 java java-8

在 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/

相关文章:

java - 图像文件结构和编码文件名。像 Facebook 图片网址

java - 有没有办法将相同的 hibernate 实体映射到不同方案中的多个表

java - java中如何解析/转换(不确定这个术语)未知的数据类型

java - 第三方库中的通用方法限制规避

java - 计算 Stream 的元素

java - 在现有代码中添加/删除某些代码的设计/模式应该是什么

Java强制关闭程序

java - 通过聚合和分组将一个对象映射到另一个对象

java - 如何以 Java 8 方式获取特定 URL 上的文本行流?

session - Vaadin Framework 7 中 session 超时的不规则性