我有一個錯誤代碼列表,我想檢查它們是否在單獨(dú)的數(shù)組中包含錯誤代碼。如果列表 errorCode 中存在錯誤代碼,那么我想將它們過濾掉。這是我到目前為止int[] ignoredErrorCodes = {400, 500}; List<Error> errorCodes = errorsList.stream() .filter(error -> error.getErrorCode() != ignoredErrorCodes[0]) .collect(Collectors.toList());如何使用流檢查數(shù)組中的所有值 ignoreErrorCodes 而不僅僅是一個值?
2 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超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貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個贊
可能是對的,Set 可能最能傳達(dá)您的意圖。但是,如果您真的想使用數(shù)組,請考慮:
import java.util.Arrays
errorsList.stream()
.filter(error -> Arrays.binarySearch(ignoredErrorCodes, error.getCode()) < 0)
.collect(Collectors.toList());
添加回答
舉報
0/150
提交
取消