无法将IntStream转换为某些对象流

hba*_*hba 20 java lambda java-8 java-stream

我正在尝试使用一个IntStream实例化对象流:

Stream<MyObject> myObjects = 
       IntStream
        .range(0, count)
        .map(id -> new MyObject(id));
Run Code Online (Sandbox Code Playgroud)

但它说它无法转换MyObjectint.

rge*_*man 38

IntStream类的map方法映射ints到更多的intS,用IntUnaryOperator(intint),而不是对象.

通常,所有流的map方法都将流的类型映射到自身,并mapToXyz映射到不同的类型.

请尝试使用该mapToObj方法,而不是IntFunction(int对象).

.mapToObj(id -> new MyObject(id));
Run Code Online (Sandbox Code Playgroud)

  • 或者`.mapToObj(MyObject :: new)`... (10认同)

小智 10

Stream stream2 = intStream.mapToObj( i -> new ClassName(i));
Run Code Online (Sandbox Code Playgroud)

这将转换intstreamStream指定的对象类型,mapToObj接受一个函数。

有方法intStream.boxed()可以直接将 intStream 转换为Stream<Integer>