如何在 Java 8 中使用过滤器忽略来自 int 数组和集合的值

我有一个错误代码列表,我想检查它们是否在单独的数组中包含错误代码。如果列表 errorCode 中存在错误代码,那么我想将它们过滤掉。


这是我到目前为止


int[] ignoredErrorCodes = {400, 500};


  List<Error> errorCodes = errorsList.stream()

            .filter(error -> error.getErrorCode() != ignoredErrorCodes[0])

            .collect(Collectors.toList());

如何使用流检查数组中的所有值 ignoreErrorCodes 而不仅仅是一个值?


慕桂英546537
浏览 196回答 2
2回答

慕容708150

最好将忽略的代码存储在 a 中Set以便更快地查找:Set<Integer> ignored = Set.of(400,500);List<Error> errorCodes = errorsList.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .filter(error -> !ignored.contains(error.getErrorCode()))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());

慕勒3428872

可能是对的,Set 可能最能传达您的意图。但是,如果您真的想使用数组,请考虑:import java.util.ArrayserrorsList.stream()&nbsp; &nbsp; &nbsp; &nbsp; .filter(error -> Arrays.binarySearch(ignoredErrorCodes, error.getCode()) < 0)&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java