Map<String, Integer> splitMap = mwipLotSets.stream().collect(Collectors.toMap(lotSet -> lotSet.getXoutQty().toString(), lotSet -> 1,(v1 , v2) -> v1 + 1));键为空时报错
时间: 2024-04-15 11:31:21 浏览: 153
如果`lotSet.getXoutQty()`返回的值可能为空,而你尝试将其转换为字符串作为`Map`的键时,可能会出现空指针异常。
为了避免这种情况,你可以在调用`toString()`方法之前进行空值检查。如果值为空,你可以选择使用一个默认值或者跳过该项。
修改后的代码示例如下:
```java
Map<String, Integer> splitMap = mwipLotSets.stream()
.filter(lotSet -> lotSet.getXoutQty() != null) // 过滤掉值为空的项
.collect(Collectors.toMap(
lotSet -> lotSet.getXoutQty().toString(), // 将非空值转换为字符串作为键
lotSet -> 1,
(v1, v2) -> v1 + 1
));
```
在上述代码中,我们使用`filter`方法来过滤掉`lotSet.getXoutQty()`为空的项。这样,我们就可以避免空指针异常并且只处理非空值。
相关问题
Map<String, Integer> splitMap = mwipLotSets.stream().collect(Collectors.toMap((MwipLotSet::getXoutQty, MwipLotSet::getQty)); getXoutQty由integer转string
您可以使用lambda表达式来实现getXoutQty从Integer转换为String的功能。请使用下面的代码示例:
```java
Map<String, Integer> splitMap = mwipLotSets.stream()
.collect(Collectors.toMap(
lotSet -> lotSet.getXoutQty().toString(), // 将getXoutQty转换为String
MwipLotSet::getQty
));
```
在这个示例中,我们将lambda表达式`(lotSet -> lotSet.getXoutQty().toString())`作为`toMap`方法的第一个参数,将`getXoutQty`的返回值从Integer转换为String。然后,我们将转换后的值作为键,MwipLotSet::getQty作为值,存储到splitMap中。
Map<String, Integer> snowCodeNumMap = ScrapApply.getDetailList().stream() .collect(Collectors.toMap(ScrapApplyDetailVO::getSnowCode, ScrapApplyDetailVO::getScrapNum, Integer::sum)); 优化下代码
对于上述代码,可以通过使用 `groupingBy` 和 `summingInt` 方法来进行优化,代码如下:
```
Map<String, Integer> snowCodeNumMap =
ScrapApply.getDetailList().stream()
.collect(Collectors.groupingBy(ScrapApplyDetailVO::getSnowCode, Collectors.summingInt(ScrapApplyDetailVO::getScrapNum)));
```
在这段代码中,首先使用 `groupingBy` 方法按照 `ScrapApplyDetailVO::getSnowCode` 的返回值进行分组,然后使用 `summingInt` 方法对分组后的 `ScrapApplyDetailVO` 对象的 `ScrapApplyDetailVO::getScrapNum` 属性进行求和。最终,返回一个 `Map<String, Integer>` 类型的结果,其中键为雪花码,值为报废数量之和。
使用 `groupingBy` 和 `summingInt` 方法进行优化,可以避免手动累加的过程,代码更加简洁和易于理解。同时,这种方式也可以提高程序的性能,因为它会使用并行流来进行分组和求和操作,从而加速程序的执行。
阅读全文
相关推荐
















