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

时间:2016-01-27 20:14:08

标签: java lambda java-8 java-stream

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

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

但它表示无法将MyObject转换为int

2 个答案:

答案 0 :(得分:32)

IntStream class's map methodint映射到更多int s,IntUnaryOperatorintint),而不是对象。

通常,所有流&#39; map方法将流的类型映射到自身,mapToXyz映射到其他类型。

请改为使用mapToObj method代替IntFunctionint代替对象)。

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

答案 1 :(得分:0)

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

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

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