为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2021-11-24 18:42:20
我有一个错误代码列表,我想检查它们是否在单独的数组中包含错误代码。如果列表 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());


查看完整回答
反对 回复 2021-11-24
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

可能是对的,Set 可能最能传达您的意图。但是,如果您真的想使用数组,请考虑:


import java.util.Arrays


errorsList.stream()

        .filter(error -> Arrays.binarySearch(ignoredErrorCodes, error.getCode()) < 0)

        .collect(Collectors.toList());


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信