这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
前言
java 8 更新了许多新特性,当然这都2021年了还在讲java 8 ,别骂了别骂了,这个新特性学到就是赚到好吧。流式操作让你对集合的使用更加简便!流就像下面的管道中的水一样,可以根据不同的滤网收集器来实现最后达到我们想要的结果,集合与下面的水一样的,通过调用Stream的流式创建,通过方法调用后获取到想要的集合结果。
Lambda 与 :: 关键字
在开始Stream流之前先讲一下Lambda 和 ::关键字。
Lambda表达式
lambda表达式是为了让你的代码更加简洁优雅,让我们看下lambda的代码
//接收一个str字符串,并且打印出来,没有返回值操作
(String str) -> System.out.print(str)
转换为方法为
public void test(String str){
System.out.print(str)
}
不难看出lambda帮我们简化了很多不必要的东西,就专注于中心的内容即可,但是我就是要在此基础上扩展呢?不用怕java开发也想到了这方面,所以lambda可以再升级写成这样。
//接收一个str字符串,并且打印出来,没有返回值操作
(String str) -> {
int a = 0;
// balabla 你的逻辑代码
System.out.print(str)
}
转换为方法为
public void test(String str){
int a = 0;
// balabla 你的逻辑代码
System.out.print(str)
}
:: 双冒号关键字
类通过::可以直接调用到方法,这个经常被使用在循环遍历之中,与Stream流式操作中,下面看个案例
//先定一个数组
List<String> list = Arrays.asList("test1", "test2", "test3");
//通过双冒号来进行对数组中的每一项遍历,并且把数组中的值赋值给printStr方法
list.foreach(Test::printStr);
class Test{
public static void printStr(String str){
System.out.print(str);
}
}
使用foreach
总结
在有了这些的基础下,我们下一章开始进行进入Stream的世界,并且在被lambda和::简化的情况下,Stream的代码总数低的离谱。