Java Stream :数值流

Java 8引入了IntStream, DoubleStream, LongStream,以避免装箱拆箱带来的性能损耗。通过mapToInt等方法映射到数值流,能方便地进行求和、找最大值等操作。当需要转换回对象流时,可以使用boxed方法。此外,OptionalInt等提供默认值处理,range和rangeClosed方法则用于生成数值范围。" 110432455,10396975,Android与EMQ MQTT服务集成教程(Kotlin),"['Android开发', '物联网', 'MQTT协议', 'EMQ X', 'Kotlin编程']
摘要由CSDN通过智能技术生成

Java 8引入了三个原始类型特化流:IntStream,DoubleStream,LongStream。引入这些流是为了避免Stream频繁装箱拆箱所来的复杂性,也是为这些基本类型的流的操作带来了很大便利性,例如求和,最大值,最小值,简化归约操作。

1.映射到数值流

将流转为特定版本的常用方法mapToInt,mapToDouble和mapToLong,它们返回的是一个特化流,而不是Stream<T>。例如,我们像下面这样对一个菜单集合menu求所有Dish的卡路里和。

int calories = menu.stream() 
 .mapToInt(Dish::getCalories) 
 .sum();

这里,mapToInt会从每道菜中提取热量(用Integer表示),并返回一个IntStream,然后就可以调用IntStream接口中定义的sum方法,对卡路里求和。如果流是空,sum默认返回时0。

2.转换回对象流

同样一旦有了数值流,可能还想把它转化为非特化流。例如,IntStream上操作只能产生原始整数:IntStream的map操作接受的Lambda必须int并返回int(一个IntUnaryOperator)。但是可能想要生成另一类,比如Dish,因此需要访问Stream接口中定义的那些更广泛的操作。

IntStream intStream = menu.stream().mapToInt(Dish::getCalories); 
Stream<Integer> stream = intStream.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值