高效 告别996,开启java高效编程之门 2-8实战:判断逻辑参数化-Lambda表达式

0 有用部分

1    函数式编程简介

2    函数式编程和lambda的关系

3    lambda表达式应用范围

4    lambda应用的五个案例

5    函数式编程应用条件

6 提出问题

0  有用部分

4  lambda应用的五个案例

5  函数式编程应用条件

6  提出问题

本节主要介绍了lambda的使用方式,具体demo参照2-10 和2-15

1  函数式编程简介

函数式编程是一种不同的编程思想,定义函数作为公民,可以赋值给变量,作为参数或者返回值来传递

2  函数式编程和lambda的关系

为了向scala,haskell语言看齐
lambda是 java引入函数式编程的一种革命性的尝试。

3  lambda表达式应用范围

lambda可以替代面向对象方式下的所有匿名函数,通过行为参数化传递代码

4  lambda应用的四个案例
◆(parameters)->expression
◆(parameters)->{statement;}

4.1  没有参数

()->System.out.println("Hello World!");

4.2  只有一个参数

name->System.out.println(
"Hello World from"+name+"!");

4.3  没有参数,逻辑复杂

()->{
System.out.println("Hello");
System.out.println("World");
}

4.4  包含两个参数的方法

BinaryOperator<Long> functionAdd=(x,y)->x+y;
Long result=functionAdd.apply(1L,2L);

4.5   对参数显示声明

BinaryOperator<Long>functionAdd=(Long x,Longy)->x+y;
Long result=functionAdd.apply(1L,2L);
5  函数式编程应用条件

◆接口中只有一个抽象方法(必看)(一个接口中有多个方法的还是不要用了,感觉好不方便啊,如果完全面向函数式编程,需要把接口中的多个方法拆成了很多的小方法,还是两种编程方法结合着用比较好)
◆Java8的函数式接口注解:@FunctionInterface(可加可不加,只是为了校验是否符合lambda规则)
◆函数式接口的抽象方法签名:函数描述符

6  提出问题

一个接口中有多个方法的还是不要用了,感觉好不方便啊,如果完全面向函数式编程,需要把接口中的多个方法拆成了很多的小方法,还是两种编程方法结合着用比较好。

问题:如果原来一个接口A中只有一个抽象方法B,我C,D,E等多个类都用了lambda表达式,以后接口A中加了一个抽象方法F,那么引用A接口的C,D,E类是不是都要同步改造?
针对这种情况,有没有好的解决方法?

原文地址:https://www.cnblogs.com/1446358788-qq/p/12630231.html

时间: 2024-11-07 14:31:12

高效 告别996,开启java高效编程之门 2-8实战:判断逻辑参数化-Lambda表达式的相关文章

高效 告别996,开启java高效编程之门 2-10实战:自定义函数式接口

1 有用部分 2    代码演练 1 有用部分 个人理解: 1.1 关于lambda的应用 通过 @FunctionalInterface注解 将其参数 fileContent  注入,调用的时候可以直接调取到. 服务层通过直接调用接口的方法,没有用实现类 1.2 关于文件流的读取操作 demo中设计更多的流的读取的操作 2 代码演练 需求: 将本地文件打印出来 接口: package com.imooc.zhangxiaoxi.lambda.file; /** * 接口中只有一个抽象方法,可以

Java编程的逻辑 (91) - Lambda表达式

在之前的章节中,我们的讨论基本都是基于Java 7的,从本节开始,我们探讨Java 8的一些特性,主要内容包括: 传递行为代码 - Lambda表达式 函数式数据处理 - 流 组合式异步编程 - CompletableFuture 新的日期和时间API 本节,我们先讨论Lambda表达式,它是什么?有什么用呢? Lambda表达式是Java 8新引入的一种语法,是一种紧凑的传递代码的方式,它的名字来源于学术界的λ演算,具体我们就不探讨了. 理解Lambda表达式,我们先回顾一下接口.匿名内部类和

高效 告别996,开启java高效编程之门 3-2传统方式处理业务逻辑

1 重点 1.1 对sort方法使用的理解 2 代码演练 需求: 根据第一章需求,女盆友提出需求* 1 打印所有商品* 2 图书类的商品一定给买* 3 最贵的买两件* 4 打印最贵的两件商品的名称和总价 测试类: package com.imooc.zhangxiaoxi.stream; import com.alibaba.fastjson.JSON; import com.imooc.zhangxiaoxi.lambda.cart.CartService; import com.imooc.

高效 告别996,开启java高效编程之门 3-7实战:常用中间操作演示之:过滤/映射/扁平化 filter/map/flagMap

1 重点 filter方法的使用 map方法的使用 flatMap方法的使用 forEach方法的使用 2 map和flatMap的区别: map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd. flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd.通常用来切分单词,可用来单词计数 3 实战演示之过滤(filter): package com.imooc.zhangxiaoxi.stream; import com.al

高效 告别996,开启java高效编程之门 2-15方法引用精讲

2-14课程和2-12重复了,所以没有发出来 1 方法引用使用条件 判断方法引用 是否满足场景的要求的时候,只需要看我们的出参和入参是否满足接口的要求即可 2 方法引用场景 四种方法引用类型: 指向静态方法 Class::staticMethod指向现有对象的实例方法 object::instanceMethod指向任意类型的实例方法 C1ass::instanceMethod指向构造方法 Class::new 3 方法引用demo package com.imooc.zhangxiaoxi.l

高效 告别996,开启java高效编程之门 3-6流操作分类

1 重点 理解流程操作分类 常用的方法 2 Stream流操作分类: 2.1 流操作分类之中间操作(Intermediate): 无状态操作——filter/map/peek等有状态操作——dictinct/sorted/limit等 2.2 流操作分类之终端操作(Termina1):非短路操作——forEach/collect/count等短路操作——anyMatch/findFirst/findAny等 2.3 有状态操作无状态操作区别: 无状态操作: 比如map或者filter会从输入流中

高效 告别996,开启java高效编程之门 3-5 Stream流概念解析

3-4讲的没有意义,直接过了 1 重点 概念解析中的定义 Stream流的组成 Stream流和集合的区别 2 概念解析 定义: 从支持数据处理操作的源生成的元素序列. 解释: 元素序列:和集合一样,流也是一个接口,可以访问特定元素类型的一组有序值,有序值就是元素序列 源:为流提供数据的源头,比如集合,数组,都可以称之为源. 数据处理操作:流的数据处理操作支持类似与数据库的操作(map,sort,limit)以及函数式编程语言中的一些常用操作. 功能: ◆JDK1.8引入的新成员,以声明式方式处

Java 终于有 Lambda 表达式啦~Java 8 语言变化&mdash;&mdash;Lambda 表达式和接口类更改【转载】

原文地址 en cn 下载 Demo Java? 8 包含一些重要的新的语言功能,为您提供了构建程序的更简单方式.Lambda 表达式 为内联代码块定义一种新语法,其灵活性与匿名内部类一样,但样板文件要少得多.接口更改使得接口可以添加到现有接口中,同时又不会破坏与现有代码的兼容性.本文将了解这些更改是如何协同工作的. Java 8 的最大变化在于添加了对 lambda 表达式 的支持.Lambda 表达式是可按引用传递的代码块.类似于一些其他编程语言中的闭包:它们是实现某项功能的代码,可接受一个

【Java学习笔记之三十一】详解Java8 lambda表达式

Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出.Lambda表达式取代了匿名类,取消了模板,允许用函数式风格编写代码.这样有时可读性更好,表达更清晰.在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进步.将进一步促进并行