Как отфильтровать не-int значения из двойного массива, используя поток? - PullRequest
4 голосов
/ 06 марта 2020

IntelliJ говорил мне, что Double [] является ошибкой: неверный тип возврата в ссылке на метод: невозможно преобразовать Double [] в A []. Я использовал double [], удалил ссылку :: new stati c и все ту же ошибку. Как мне решить эту ошибку? Я пытаюсь вернуть 1.000 в отфильтрованных результатах.

double[] pricesDoubleArr = {1.000,2.800,4.900};
double[] pricesDoubleFiltered = Arrays.stream(pricesDoubleArr)
                                      .filter(x -> x != Math.round(x))
                                      .toArray(Double[]::new);

1 Ответ

5 голосов
/ 06 марта 2020

Просто используйте .toArray(); без Double[]::new, потому что ваш поток удерживается с начала массива double:

double[] doubles = Arrays.stream(pricesDoubleArr)
        .filter(x -> x != Math.round(x))
        .toArray();

Я не уверен, что вы ищете из своего кода, но из вашего вопроса:

Я пытаюсь вернуть 1.000 в отфильтрованных результатах.

Я думаю, что вы ищете:

.filter(x -> x == (double) (int) x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...