java 8从ListOdsMaterialDocumentItem splitReleaseTotalMap中获取字段Material为026000010003的quantityInEntryUnit字段Material是唯一的字段quantityInEntryUnit是String类型并判断是否有值没有值的话取BigDecimalZERO
可以使用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
解释一下上面的代码:
- 使用
stream()方法将List转换为流。 - 使用
filter()方法过滤出Material为026000010003的记录。 - 使用
map()方法提取quantityInEntryUnit字段。 - 使用
filter()方法过滤出有值的记录。 - 使用
map()方法将String类型转换为BigDecimal类型。 - 使用
findFirst()方法取第一个符合条件的记录。 - 使用
orElse()方法如果没有符合条件的记录,则返回BigDecimal.ZERO
原文地址: http://www.cveoy.top/t/topic/huEm 著作权归作者所有。请勿转载和采集!