优化代码 List<ActionExecutingParam> validActionList = actionExecutingParam.stream().filter(o -> check(o.getProgressStatus(), o.getAppMap())).collect(Collectors.toList()); List<ActionExecutingParam> unvalidActionList = actionExecutingParam.stream().filter(o -> !check(o.getProgressStatus(), o.getAppMap())).collect(Collectors.toList());
时间: 2024-02-26 16:57:26 浏览: 86
List<Long>转一维数组 Long[](csdn)————程序.pdf
5星 · 资源好评率100%
你的代码实现了将一个 List<ActionExecutingParam> 按照条件筛选成两个 List<ActionExecutingParam> 的功能,其中一个 List 存放符合条件的元素,另一个 List 存放不符合条件的元素。
不过代码中有一些可以优化的地方:
1. 可以将 `check(o.getProgressStatus(), o.getAppMap())` 的结果缓存起来,避免重复计算。
2. 可以使用 `partitioningBy` 方法来将 List 分成两个 Map,其中一个 Map 中存放符合条件的元素,另一个 Map 中存放不符合条件的元素。
下面是优化后的代码实现:
```
Map<Boolean, List<ActionExecutingParam>> partitionedMap = actionExecutingParam.stream()
.collect(Collectors.partitioningBy(o -> check(o.getProgressStatus(), o.getAppMap())));
List<ActionExecutingParam> validActionList = partitionedMap.get(true);
List<ActionExecutingParam> unvalidActionList = partitionedMap.get(false);
```
这样可以避免重复计算,并且更加简洁和易于理解。
阅读全文