Stream的map()和mapToObj()的区别

本文探讨了Java中Stream的map()和mapToObj()的区别。mapToInt()和mapToDouble()等方法适用于基本类型流的转换,而mapToObj()用于将IntStream等转换为常规的Stream。例如,将字符数组转换为Character的Stream时,会用到mapToObj()。文章还介绍了Stream的多种类型以及它们在处理不同类型数据时的便利性。
摘要由CSDN通过智能技术生成

前言
在将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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值