如何使用流从 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)
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)