如何使用流从双精度数组中过滤掉非整数值?

imp*_*nte 4 java int filter java-8 java-stream

IntelliJ 一直告诉我 Double[] 是一个错误:方法引用中的返回类型错误:无法将 Double[] 转换为 A[]。我使用了 double[],删除了 ::new 静态引用,但仍然出现相同的错误。如何解决此错误?我试图在过滤结果中取回 1.000。

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

YCF*_*F_L 5

只需使用.toArray();without Double[]::new,因为您的流从双精度数组开始:

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

我不确定你从代码中看什么,但从你的问题来看:

我试图在过滤结果中取回 1.000。

我认为您正在寻找:

.filter(x -> x == (double) (int) x)
Run Code Online (Sandbox Code Playgroud)