首页 > 编程语言 >函数式编程-part1概述和理解

函数式编程-part1概述和理解

时间:2023-07-19 20:56:45浏览次数:43  
标签:函数 author 编程 part1 add book 概述 bookList

为什么学?

  • 能够看懂公司里的代码

  • 大数量下处理集合效率高,因为有并行流,而自己创建处理会有很多问题

  • 代码可读性高

  • 消灭嵌套地狱

本系列将从Lambda表达式、Stream流、Optional、函数式接口、方法引用等顺序开始讲解

//查询未成年作家的评分在70以上的书籍 由于洋流影响所以作家和书籍可能出现重复,需要进行去重
List<Book> bookList = new ArrayList<>();
Set<Book> uniqueBookValues = new HashSet<>();
Set<Author> uniqueAuthorValues = new HashSet<>();
for (Author author : authors) {
    if (uniqueAuthorValues.add(author)) {
        if (author.getAge() < 18) {
            List<Book> books = author.getBooks();
            for (Book book : books) {
                if (book.getScore() > 70) {
                    if (uniqueBookValues.add(book)) {
                        bookList.add(book);
                    }
                }
            }
        }
    }
}
System.out.println(bookList);

使用Lambda后

List<Book> collect = authors.stream()
    .distinct()
    .filter(author -> author.getAge() < 18)
    .map(author -> author.getBooks())
    .flatMap(Collection::stream)
    .filter(book -> book.getScore() > 70)
    .distinct()
    .collect(Collectors.toList());
System.out.println(collect);

函数式编程思想

概念

  比起关注对象更关注函数

  面向对象思想需要关注用什么对象完成什么事情。

  而函数式编程思想就类似于我们数学中的函数。它主要关注的是对数据进行了什么操作。

优点

  • 代码简洁,开发快速

  • 接近自然语言,易于理解

  • 易于"并发编程"

标签:函数,author,编程,part1,add,book,概述,bookList
From: https://www.cnblogs.com/wegop/p/17566703.html

相关文章

  • JUC并发编程(1)—CompletableFuture详解
    @目录CompletableFuture介绍1.创建异步任务2.CompletableFutureAPI①.获得结果和触发计算(get、getNow、join、complete)②.对计算结果进行处理(thenApply、handle)③.对计算结果进行消费(thenRun、thenAccept、thenApply)④.对计算速度进行选用(applyToEither、acceptEither......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(1)
    1001Hide-And-SeekGame题意:给出一颗树,两人在树上特定两点来回走,问最早在那个节点相遇思路:枚举所有点,看它是否同时在两条链上,如果在,那么结合周期、两人最早到达时间,返回到达时间得到4个同余方程(拓展欧几里得),然后得到最小可能解#pragmaGCCoptimize(2)#pragmaGCCoptimize(3......
  • 网络编程 p4 TCP编程
    TCP编程基本介绍基于客户端——服务端的网络通信;底层使用的是TCP/IP协议;应用场景举例:客户端发送数据,服务端接收并显示在控制台;基于Socket的TCP编程;示意图netstat指令netstat-an可以查看当前主机网络情况,包括端口监听情况和网络连接情况;netstat-an|more......
  • (转)Overlay和Underlay网络协议区别及概述讲解
    原文:https://www.cnblogs.com/fengdejiyixx/p/15567609.html本文分别介绍Overlay网络模型和Underlay网络模型。(一)Overlay网络模型跨主机网络意味着将不同主机上的容器用同一个虚拟网络连接起来。这个虚拟网络的拓扑结构和实现技术就是网络模型。物理网络模型中,连通多个物理网......
  • MySQL技术内幕(SQL编程)
    MySQL技术内幕(SQL编程)MySQL是一种常用的关系型数据库管理系统,它具有高性能、可靠性和易用性。SQL编程是使用MySQL进行开发的基础,本文将介绍一些MySQL技术内幕和SQL编程的基本知识。连接数据库在使用MySQL之前,我们首先要连接数据库。MySQL提供了多种方式来连接数据库,其中一种常......
  • Spring boot 编程式事务
    SpringBoot编程式事务在SpringBoot中,事务管理是一项非常重要的功能。事务管理可以确保在数据库操作中的一系列操作要么全部成功,要么全部失败。SpringBoot提供了两种事务管理方式:声明式事务和编程式事务。本文将重点介绍SpringBoot的编程式事务管理。编程式事务简介编程式事......
  • JavaScript 的优雅编程技巧:Singleton Pattern
    JavaScript的优雅编程技巧:SingletonPattern定义单例模式:保证一个类仅有一个实例,并提供一个访问的全局访问点。特点仅有一个实例对象全局都可访问该实例主动实例化延迟实例化类似单例模式的使用实践jQuery,lodash,moment....电商中的购物车(因为一个用户只有一......
  • 【雕爷学编程】Arduino动手做(22)——8X8 LED点阵MAX7219屏8
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来---小小的进步或是搞不定的问题,希望能够......
  • Excel数据分析教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Excel数据分析入门教程-从基本到高级概念的简单步骤了解Excel数据分析,其中包括概述,流程,Excel数据分析概述,使用范围名称,表格,使用文本功能清理数据,清洁数据包含日期值,使用时间值,条件格式,排序,过滤,带范围的小计,快速分析,查找功能,数据透视表,数据可视化,验证,财务分析,使用多个表......
  • 代码随想录算法训练营第57天 | ● 647. 回文子串 ● 516.最长回文子序列 ● 动
     第九章 动态规划part17●  647. 回文子串  ●  516.最长回文子序列●  动态规划总结篇 今天 我们就要结束动态规划章节了,大家激不激动!!!   详细布置   647. 回文子串    动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。https:......