如何从浮点数获取流[]

2022-08-31 22:24:43

当我学习如何使用java 8流时,我注意到一些奇怪的东西。

Arrays.stream()有除浮点数组以外的所有方法:

  • Arrays.stream(int[]) : IntStream
  • Arrays.stream(long[]) : LongStream
  • Arrays.stream(double[]) : DoubleStream

类似地,有用于int,double等的Stream实现,但没有浮点数:

  • IntStream
  • LongStream
  • DoubleStream

这是有原因的吗?

使用浮流的建议方法是什么?


答案 1

这是一种更好的方法,它不涉及复制数据。

DoubleStream ds = IntStream.range(0, floatArray.length)
                           .mapToDouble(i -> floatArray[i]);

答案 2

来自 Cay S. Horstmann :Java SE 8 for the Really Impatient

2.12. 基元类型流

...如果要存储短整型、字符型、字节型和布尔值,请使用 IntStream,对于 float,请使用 DoubleStream。库设计人员认为不值得再添加五种流类型。


推荐