如何从float []获取流

Arn*_*lle 34 java java-8 java-stream

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

Arrays.stream() 有浮动数组的所有方法:

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

类似地,有int,double等的Stream实现,但不是浮点数:

  • IntStream
  • LongStream
  • DoubleStream

这有什么理由吗?

使用浮点流的推荐方法是什么?

Bri*_*etz 42

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

DoubleStream ds = IntStream.range(0, floatArray.length)
                           .mapToDouble(i -> floatArray[i]);
Run Code Online (Sandbox Code Playgroud)

  • 令人困惑的是它使用了IntStream :) (4认同)
  • 从短数组转换为 IntStream `IntStream is = IntStream.range(0, ShortValues.length).map(i -> ShortValues[i]);` (2认同)

mar*_*inj 25

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

2.12.原始类型流

...如果要存储short,char,byte和boolean,请使用IntStream,对于float,请使用DoubleStream.图书馆设计师认为不值得添加另外五种流类型.

  • 说实话,我宁愿使用 Stream<Character> 而不是使用 intStream,并且每次我想用它做任何事情时都必须将 int 强制转换为 char。 (2认同)