Как использовать фильтр в Java 8, чтобы игнорировать значения из массива int и для коллекции - PullRequest
0 голосов
/ 18 октября 2018

У меня есть список кодов ошибок, которые я хочу проверить, содержат ли они коды ошибок в отдельном массиве.Если коды ошибок присутствуют в списке errorCode, то я хочу отфильтровать их.

Это то, что у меня есть

int[] ignoredErrorCodes = {400, 500};

  List<Error> errorCodes = errorsList.stream()
            .filter(error -> error.getErrorCode() != ignoredErrorCodes[0])
            .collect(Collectors.toList());

, как вместо этого проверить все значения в массиве ignoredErrorCodesтолько один, используя потоки?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

@ Эран, вероятно, прав, Сет, скорее всего, лучше всего сообщит о ваших намерениях.Если вы действительно хотите работать с массивом, подумайте:

import java.util.Arrays

errorsList.stream()
        .filter(error -> Arrays.binarySearch(ignoredErrorCodes, error.getCode()) < 0)
        .collect(Collectors.toList());
0 голосов
/ 18 октября 2018

Было бы лучше хранить коды игнорирования в Set для более быстрого поиска:

Set<Integer> ignored = Set.of(400,500);
List<Error> errorCodes = errorsList.stream()
            .filter(error -> !ignored.contains(error.getErrorCode()))
            .collect(Collectors.toList());
...