如何使用流从 double 数组中过滤掉非 int 值?

How do I filter out non-int values from a double array using stream?

IntelliJ 一直告诉我 Double[] 是一个错误:方法引用中的错误 return 类型:无法将 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);

只需使用 .toArray(); 而不使用 Double[]::new,因为您的流从一开始就包含一个双精度数组:

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

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

I am attempting to get back 1.000 in the filtered results.

我想你正在寻找:

.filter(x -> x == (double) (int) x)