可以使用Java 8的流式操作和Lambda表达式来实现该需求:

BigDecimal quantityInEntryUnit = splitReleaseTotalMap.stream()
        .filter(item -> "026000010003".equals(item.getMaterial())) // 过滤出Material为026000010003的记录
        .map(item -> item.getQuantityInEntryUnit()) // 提取quantityInEntryUnit字段
        .filter(quantity -> quantity != null && !quantity.isEmpty()) // 过滤出有值的记录
        .map(BigDecimal::new) // 将String类型转换为BigDecimal类型
        .findFirst() // 取第一个符合条件的记录
        .orElse(BigDecimal.ZERO); // 如果没有符合条件的记录,则返回BigDecimal.ZERO

解释一下上面的代码:

  1. 使用stream()方法将List转换为流。
  2. 使用filter()方法过滤出Material为026000010003的记录。
  3. 使用map()方法提取quantityInEntryUnit字段。
  4. 使用filter()方法过滤出有值的记录。
  5. 使用map()方法将String类型转换为BigDecimal类型。
  6. 使用findFirst()方法取第一个符合条件的记录。
  7. 使用orElse()方法如果没有符合条件的记录,则返回BigDecimal.ZERO
java 8从ListOdsMaterialDocumentItem splitReleaseTotalMap中获取字段Material为026000010003的quantityInEntryUnit字段Material是唯一的字段quantityInEntryUnit是String类型并判断是否有值没有值的话取BigDecimalZERO

原文地址: http://www.cveoy.top/t/topic/huEm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录