List<SpmbhfjjygsEntity> fjjygsList 使用stream遍历 使SpmbhfjjygsEntity的BigDecimal类型的gszb字段乘BigDecimal类型的jygs 存到 jygsss字段上
时间: 2024-10-17 16:07:09 浏览: 31
在Java中,你可以使用`List<SpmbhfjjygsEntity>`的`stream()`方法来遍历列表中的每个元素,然后通过链式操作修改每个对象的`gszb`字段和`jygs`字段的值。假设这两个字段都是`BigDecimal`类型,你可以这样做:
```java
fjjygsList.forEach(entity -> {
BigDecimal gszb = entity.getGszb(); // 获取gszb字段值
BigDecimal jygs = entity.getJygs(); // 获取jygs字段值
if (gszb != null && jygs != null) { // 验证值是否存在,防止null值相乘
entity.setJygsss(gszb.multiply(jygs)); // 乘法操作后存储到jygsss字段
} else {
System.out.println("One or both values are null for " + entity); // 如果其中一个为null,打印日志提示
}
});
```
这段代码会遍历`fjjygsList`中的每一个`SpmbhfjjygsEntity`对象,如果`gszb`和`jygs`都有值,就将它们相乘并将结果赋给`entity`的`jygsss`字段。如果任何一个值为null,代码会打印一条消息提醒。
相关问题
List<WmsInInboundItem> inboundItems用stream将BigDecimal类型的in_qty加起来
`List<WmsInInboundItem>` 是一个列表,其中包含 `WmsInInboundItem` 类型的对象。如果你想使用 Java 8 的 Stream API 来计算所有 `in_qty` 属性值(类型为 BigDecimal)的总和,你可以这样做:
```java
import java.math.BigDecimal;
import java.util.List;
// 假设 WmsInInboundItem 类有一个名为 in_qty 的 BigDecimal 字段
List<WmsInInboundItem> inboundItems = ... // 这里是你的列表
BigDecimal totalQuantity = inboundItems.stream()
.map(WmsInInboundItem::getIn_qty) // 提取每个 item 的 in_qty
.reduce(BigDecimal.ZERO, BigDecimal::add); // 使用 reduce 函数累加所有值
System.out.println("所有 inbound items 的 in_qty 总和为: " + totalQuantity);
```
这里首先使用 `stream()` 转换成流,然后通过 `map()` 函数应用到每个元素上,提取其 `in_qty` 值。接着使用 `reduce()` 函数将这些值相加,初始值设为 `BigDecimal.ZERO`。
如何将List<String>转化为List<BigDecimal>
要将 `List<String>` 转换为 `List<BigDecimal>`,你可以使用流(Stream)和 `BigDecimal` 的 `valueOf` 方法来实现。以下是一种实现方式:
```java
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> stringList = Arrays.asList("1.23", "4.56", "7.89");
List<BigDecimal> bigDecimalList = stringList.stream()
.map(BigDecimal::new)
.collect(Collectors.toList());
System.out.println(bigDecimalList);
}
}
```
在上述示例中,我们首先创建了一个 `List<String>`,名为 `stringList`,其中包含了几个字符串表示的数字。然后,我们使用流的 `map` 操作来将每个字符串转换为对应的 `BigDecimal` 对象。这里使用了方法引用 `BigDecimal::new` 来创建 `BigDecimal` 对象。最后,我们使用 `collect` 方法将流收集为一个新的 `List<BigDecimal>`,名为 `bigDecimalList`。
运行以上代码,输出将会是:
```
[1.23, 4.56, 7.89]
```
这就是将 `List<String>` 转换为 `List<BigDecimal>` 后的结果。
希望对你有帮助!如果还有其他问题,请随时提问。
阅读全文