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

38

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

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

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

2个回答

67

IntStream类的map方法将int映射为更多的int,使用IntUnaryOperator (int to int),而非对象。

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

尝试使用mapToObj方法,这个方法接受一个IntFunction (int to object)。

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

15
或者 .mapToObj(MyObject::new)... 可以翻译为“或者使用 .mapToObj(MyObject::new)...”。其中,MyObject::new 是一个构造函数引用,将该方法应用于流中的每个元素,并将其转换为 MyObject 类型的对象。 - Holger

10
Stream stream2 = intStream.mapToObj( i -> new ClassName(i));

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

还有一个方法intStream.boxed()直接将intstream转换为Stream<Integer>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接