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

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

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

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

【问题讨论】:

    标签: java lambda java-8 java-stream


    【解决方案1】:

    IntStream class's map methodints 映射到更多 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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2015-02-04
      相关资源
      最近更新 更多