前言
在将char数组转为List<Charactor>的时候注意到的
那么map()和mapToObj()的区别到底是什么?
Stream的流有几种?
Stream类包括了IntStream、LongStream、DoubleStream等。
像是下面这个IntStream
IntStream intStream = Arrays.asList(1, 2, 3, 4, 5, 6)
.stream().mapToInt(i -> i);
这样就很方便了,我们可以直接使用基本类型的流,
而不需要再在外面套一层Stream<Integer>或Stream<Double>,这将框住值。
那么map呢?
类似地,Strram的map()方法也有这种面相几门类型的映射方式。
在Stream类中,有mapToInt、mapToDouble方法等…
map()和mapToObj()区别
我们看看map的源码
返回的是一个IntStream
IntStream map(IntUnaryOperator mapper);
而mapToObj()
它接受一个int的function,返回的是一个Stream
<U> Stream<U> mapToObj(IntFunction<? extends U> mapper);
它的作用是将流从IntStream更改为stream
如果当一个方法接受的是stream的时候我们可以将intStream通过这个方法转为stream继续操作
比如下面这段代码,
chars()方法的作用是:
转换字符串至intStream流,每个int值代表字符序列的ASCII值
之后再将int的ACS码的流往Stream流转
char[] chars = new char[]{'1','2','3'};
Stream<Character> characterStream = new String(chars)
.chars().mapToObj(i -> (char) i);
如有错误还请指正
end