我有一个错误代码列表,我想检查它们是否在单独的数组中包含错误代码。如果列表 errorCode 中存在错误代码,那么我想将它们过滤掉。这是我到目前为止int[] ignoredErrorCodes = {400, 500}; List<Error> errorCodes = errorsList.stream() .filter(error -> error.getErrorCode() != ignoredErrorCodes[0]) .collect(Collectors.toList());如何使用流检查数组中的所有值 ignoreErrorCodes 而不仅仅是一个值?
2 回答
慕容708150
TA贡献1831条经验 获得超4个赞
最好将忽略的代码存储在 a 中Set以便更快地查找:
Set<Integer> ignored = Set.of(400,500);
List<Error> errorCodes = errorsList.stream()
.filter(error -> !ignored.contains(error.getErrorCode()))
.collect(Collectors.toList());
慕勒3428872
TA贡献1848条经验 获得超6个赞
可能是对的,Set 可能最能传达您的意图。但是,如果您真的想使用数组,请考虑:
import java.util.Arrays
errorsList.stream()
.filter(error -> Arrays.binarySearch(ignoredErrorCodes, error.getCode()) < 0)
.collect(Collectors.toList());
添加回答
举报
0/150
提交
取消