java8实战读书笔记:数值流、Stream创建与Optional类的使用

本文介绍了Java8中数值流的使用,包括如何通过mapToInt进行计算,如计算菜品总卡路里,以及如何将IntStream转换回对象流。此外,还探讨了常用函数如sum、min、max等。最后,文章提到了Optional类在处理null值中的作用,以及一些面试经验和真题解析。
摘要由CSDN通过智能技术生成

public static void test_reduce_caluli(List menu) {

int calories = menu.stream()

.map(Dish::getCalories)

.reduce(0, Integer::sum);

System.out.println(“菜品中的总卡路里:” + calories);

}

上面包含了一个基本数据类型的装箱/拆箱动作,java8的流API提供了mapToInt方法,直接返回int类型的流

我们先稍微看一下mapToInt的方法声明:

IntStream mapToInt(ToIntFunction<? super T> mapper)

接受一个T->int的函数式编程接口,直接返回IntStream流对象,而且IntStream本身提供了一些常用的聚合函数,例如sum。

使用IntStream来实现计算菜单中所有菜品的卡路里之和,其示例如下:

public static void test_reduce_caluli_intStream(List menu) {

int calories = menu.stream()

.mapToInt(Dish::getCalories)

.sum();

System.out.println(“菜品中的总卡路里:” + calories);

}

1.1.2 转换回对象流

使用了特化流例如IntStream后,将不能再自动转换为其对应的封装对象流Stream< T >了,我们可以随意从IntStream对象中对应的通用方法的函数声明,例如IntStream#map函数的声明如下:

IntStream map(IntUnaryOperator mapper);

只能接受int -> int的函数式编程接口,如果想将IntStream转回到Stream< Integer >,该如何处理呢?

IntStream提供了boxed()方法来实现将基础数据类型转换回对应的包装类型的流。

1.1.3 常用函数

Stream中定义的方法,IntStream也可以使用,例如map、flatMap、distinict等,IntStream除这些之外,还提供了常用的聚合函数,例如sum、min、max、average(平均数)。

OptionalDouble average();

OptionalInt max();

OptionalInt min();

int sum();

有关Optional相关的类将在下文详细介绍。

另外除了上面提到的聚合函数,IntStream还提供了两个与数值范围的方法:

public static IntStream range(int startInclusive, int endExclusive);<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值