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

Posted

技术标签:

【中文标题】无法将 IntStream 转换为某些对象流【英文标题】:Cannot convert IntStream to some Object Stream 【发布时间】:2016-05-04 23:33:57 【问题描述】:

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

Stream<MyObject> myObjects = 
       IntStream
        .range(0, count)
        .map(id -> new MyObject(id));

但它说它无法将MyObject 转换为int

【问题讨论】:

【参考方案1】:

IntStream class's map method 将 ints 映射到更多 ints,使用 IntUnaryOperatorintint),而不是对象。

一般来说,所有流的map方法都将流的类型映射到自身,mapToXyz映射到不同的类型。

改用mapToObj method,它接受IntFunctionint 反对)。

.mapToObj(id -> new MyObject(id));

【讨论】:

.mapToObj(MyObject::new)...【参考方案2】:
Stream stream2 = intStream.mapToObj( i -> new ClassName(i));

这会将intstream转换为指定对象类型的StreammapToObj接受一个函数。

intStream.boxed()方法可以直接将intStream转换成Stream&lt;Integer&gt;

【讨论】:

以上是关于无法将 IntStream 转换为某些对象流的主要内容,如果未能解决你的问题,请参考以下文章

为啥原始流没有收集(收集器)?

使用流将对象列表转换为从 toString 方法获得的字符串

将对象列表转换为映射Java 8流

通过流将带有列表的列表对象转换为Java 8中的映射[重复]

无法解析我的Json对象,该对象在Spring Cloud流中通过绑定器接收

无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误