首页 > 编程语言 >对Stream函数式编程的理解

对Stream函数式编程的理解

时间:2024-07-10 10:20:41浏览次数:13  
标签:API getAge 函数 Stream 编程 filter 过滤 result

什么是Stream

Stream被翻译为流,它的工作过程像将一瓶水导入有很多过滤阀的管道一样,水每经过一个过滤阀,便被操作一次,比如过滤,转换等,最后管道的另外一头有一个容器负责接收剩下的水。

示意图如下:

首先通过source产生流,然后依次通过一些中间操作,比如过滤,转换,限制等,最后结束对流的操作。

Stream也可以理解为一个更加高级的迭代器,主要的作用便是遍历其中每一个元素。

Stream作用

Stream API主要是通过Lambda表达式完成,极大的提高了程序的效率和可读性,同时Stram API中自带的并行流使得并发处理集合的门槛再次降低,

使用Stream API编程无需多写一行多线程的大门就可以非常方便的写出高性能的并发程序。使用Stream API能够使你的代码更加优雅。

流的另一特点是可无限性,使用Stream,数据源可以是无限大的。

List<Student> result=new ArrayList<>();
for(Student student:students){
 
    if(student.getAge()>18){
        result.add(student);
    }
}
return result;

 

使用Stream,我们可以参照上面的流程示意图来做,首先产生Stream,然后filter过滤,最后归并到容器中。

转换为代码如下:

return students.stream().filter(s->s.getAge()>18).collect(Collectors.toList());
  • 首先stream()获得流
  • 然后filter(s->s.getAge()>18)过滤
  • 最后collect(Collectors.toList())归并到容器中

标签:API,getAge,函数,Stream,编程,filter,过滤,result
From: https://www.cnblogs.com/lllllzj/p/18293352

相关文章

  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 深入理解Java中的并发编程
    深入理解Java中的并发编程大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!并发编程是Java开发中的一个重要领域,通过并发编程,可以提高程序的执行效率和资源利用率。本文将深入探讨Java中的并发编程,包括线程的创建、同步机制、并发集合、线程池和并发工具类......
  • 【vueUse库Reactivity模块各函数简介及使用方法--上篇】
    vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法:vueUse库Sensors模块各函数简介及使用方法vueUseReactivity函数1.com......
  • 【vueUse库Reactivity模块各函数简介及使用方法--中篇】
    vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法:vueUse库Sensors模块各函数简介及使用方法vueUseReactivity函数1.rea......
  • Stream流
    filterfilter:过滤,就是过滤器,符合条件的通过,不符合条件的过滤掉;//筛选出成绩不为空的学生人数count=list.stream().filter(p->null!=p.getScore()).count();mapmap:映射,他将原集合映射成为新的集合//取出所有学生的成绩List<Double>scoreList=list.stream().map(p-......
  • Linux系统编程-文件相关操作使用详解
    1.文件描述符文件描述符(FileDescriptor)是操作系统中用于访问和操作文件或输入输出资源的一个抽象指针。它是一个非负整数,标识一个已经打开的文件或输入输出资源(如管道、网络连接等)。在UNIX和类UNIX系统(如Linux)中,文件描述符是非常重要的概念,用于文件操作、进程间通信、网络编......
  • C++八股(三)之虚函数
    目录一、虚函数可以是模板函数吗?⭐二、请你说说虚函数的工作机制⭐⭐⭐三、虚函数表在什么时候创建?每个对象都有一份虚函数表吗?四、请说说操作符重载?哪些操作符不能重载?⭐⭐五、什么是纯虚函数?⭐六、虚函数可以内联吗?⭐七、析构函数一般写成虚函数的原因?构造函数为什么......
  • c语言函数指针和函数数组
    1.函数指针我们都知道c语言指针可以指向整形,浮点型,字符等等,但实际上指针也可以指向函数。实际上当我们定义一个函数时,最终都会创建一个函数指针存储函数的地址。那么函数指针怎么定义呢?函数指针的定义不同于其他变量的定义,其他变量的定义是这样的:变量类型变量名;但c......
  • 字符串函数
    在编写程序的过程中,我们经常需要用到字符串函数,为了方便对字符串进行处理,C语言标准库中提供了一系列库函数。在使用标准库中的字符串函数之前,我们需要引用头文件string.h。接下来我们对经常用到的字符串函数进行逐一介绍。strlen的使用和模拟实现strlen的全称是stringlengt......