int wqsl = (int) Double.parseDouble(x.getWqsl()); zInventoryList.stream().filter(i -> i.getQty().compareTo(BigDecimal.ZERO) != 0).forEach(i -> { });判断集合中的qty数量是否等于或大于wqsl,如等于或者大于就返回相对于的数据,如果第一元素不等于则循环加上集合中的qty在去比较直到大于或者等wqsl即可
时间: 2024-03-20 12:39:28 浏览: 67
可以使用循环遍历集合中的元素来实现判断 qty 是否等于或大于 wqsl,比较简单的方法是使用一个变量记录已经遍历的 qty 总和,如果总和大于或等于 wqsl,就返回对应的数据。
具体代码如下:
```
BigDecimal totalQty = BigDecimal.ZERO; // 初始化已遍历的 qty 总和为 0
for (ZInventory inventory : zInventoryList) {
if (inventory.getQty().compareTo(BigDecimal.ZERO) == 0) {
continue; // 如果 qty 等于 0,则跳过该元素
}
totalQty = totalQty.add(inventory.getQty()); // 累加已遍历的 qty 总和
if (totalQty.compareTo(new BigDecimal(x.getWqsl())) >= 0) {
// 如果已遍历的 qty 总和大于或等于 wqsl,就返回对应的数据
return inventory;
}
}
```
需要注意的是,如果集合中的第一个元素的 qty 不等于 0,也需要将其加入到已遍历的 qty 总和中。因此,可以在循环之前先判断集合中的第一个元素是否等于 0,如果不等于,就先加上该元素的 qty。完整代码如下:
```
BigDecimal totalQty = BigDecimal.ZERO; // 初始化已遍历的 qty 总和为 0
for (ZInventory inventory : zInventoryList) {
if (totalQty.compareTo(BigDecimal.ZERO) == 0 && inventory.getQty().compareTo(BigDecimal.ZERO) != 0) {
// 如果是第一个元素且 qty 不等于 0,就先加上该元素的 qty
totalQty = totalQty.add(inventory.getQty());
}
if (inventory.getQty().compareTo(BigDecimal.ZERO) == 0) {
continue; // 如果 qty 等于 0,则跳过该元素
}
totalQty = totalQty.add(inventory.getQty()); // 累加已遍历的 qty 总和
if (totalQty.compareTo(new BigDecimal(x.getWqsl())) >= 0) {
// 如果已遍历的 qty 总和大于或等于 wqsl,就返回对应的数据
return inventory;
}
}
```
阅读全文
相关推荐













