Stream流式操作集合(上)

113 阅读2分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

前言

java 8 更新了许多新特性,当然这都2021年了还在讲java 8 ,别骂了别骂了,这个新特性学到就是赚到好吧。流式操作让你对集合的使用更加简便!流就像下面的管道中的水一样,可以根据不同的滤网收集器来实现最后达到我们想要的结果,集合与下面的水一样的,通过调用Stream的流式创建,通过方法调用后获取到想要的集合结果。

image.png

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的代码总数低的离谱。