在对集合的操作处理中使用到的mapToInt()方法,指的是对stream.map()的方法中泛型中做了指定。
从另外一个角度可以理解为map()方法包含了mapToInt()方法,但是在Java中两者并没有继承的关系
区别:
/**
*1.map()传参可以是泛型
*2.map()返回的结果是stream<T>
*/
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
/**
*1.mapToInt()传参只能是指定的Integer类型
*2.mapToInt()返回的结果是IntStream
*/
IntStream mapToInt(ToIntFunction<? super T> mapper);
在stream流过程中只对stream类型的可以一点到底的操作,所以通过boxd()方法将IntStream转为stream类型的流类型。
点开底层的代码可以看出IntStream,stream都是继承了BaseStream,是同级关系
public interface IntStream extends BaseStream<Integer, IntStream>
public interface Stream<T> extends BaseStream<T, Stream<T>>
还有一个区别,IntStream中对int类型的流操作提供了更多的方法,求和等方法,stream没有sum()方法的