无法将 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 将 int
s 映射到更多 int
s,使用 IntUnaryOperator
(int
到 int
),而不是对象。
一般来说,所有流的map
方法都将流的类型映射到自身,mapToXyz
映射到不同的类型。
改用mapToObj
method,它接受IntFunction
(int
反对)。
.mapToObj(id -> new MyObject(id));
【讨论】:
或.mapToObj(MyObject::new)
...【参考方案2】:
Stream stream2 = intStream.mapToObj( i -> new ClassName(i));
这会将intstream
转换为指定对象类型的Stream
,mapToObj
接受一个函数。
有intStream.boxed()
方法可以直接将intStream转换成Stream<Integer>
【讨论】:
以上是关于无法将 IntStream 转换为某些对象流的主要内容,如果未能解决你的问题,请参考以下文章
使用流将对象列表转换为从 toString 方法获得的字符串
通过流将带有列表的列表对象转换为Java 8中的映射[重复]