我正在尝试使用IntStream
来实例化对象流:
Stream<MyObject> myObjects =
IntStream
.range(0, count)
.map(id -> new MyObject(id));
但它说它无法将MyObject
转换为int
。
我正在尝试使用IntStream
来实例化对象流:
Stream<MyObject> myObjects =
IntStream
.range(0, count)
.map(id -> new MyObject(id));
但它说它无法将MyObject
转换为int
。
IntStream类的map
方法将int
映射为更多的int
,使用IntUnaryOperator
(int
to int
),而非对象。
通常,所有流的map
方法都将流的类型映射到其自身,并且mapToXyz
将其映射到不同的类型。
尝试使用mapToObj
方法,这个方法接受一个IntFunction
(int
to object)。
.mapToObj(id -> new MyObject(id));
Stream stream2 = intStream.mapToObj( i -> new ClassName(i));
这将把intstream
转换为指定对象类型的Stream
,mapToObj
接受函数。
还有一个方法intStream.boxed()
直接将intstream
转换为Stream<Integer>
。
.mapToObj(MyObject::new)
... 可以翻译为“或者使用.mapToObj(MyObject::new)
...”。其中,MyObject::new
是一个构造函数引用,将该方法应用于流中的每个元素,并将其转换为 MyObject 类型的对象。 - Holger