14、Java 泛型、集合与 Lambda 内置函数式接口

Java 泛型、集合与 Lambda 内置函数式接口

集合流操作优化

在 Java 编程中,集合流操作是常见的操作。例如有如下代码:

// 原代码
IntStream.rangeClosed(0, 10)
         .map(i -> i * i)
         .filter(i -> (i % 2) == 0)
         .forEach(System.out::println);

此代码会打印出:

0
4
16
36
64
100

但原代码会不必要地计算奇数的平方,因为奇数的平方总是奇数。我们可以改变 map filter 操作的顺序来消除这些不必要的计算:

IntStream.rangeClosed(0, 10)
         .filter(i -> (i % 2) == 0)
         .map(i -> i * i)       // call map AFTER calling filter
         .forEach(System.out::println);

输出结果是相同的。这个简单的例子展示了有时可以改变中间操作的顺序而不改变行为。

终端操作

在流管道的末尾需要提供一个终端操作。这个终端操作通常会产生一个结果,例如在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值