Lambda表达式作为Java8引入的新语法,使Java也可以实现函数式编程风格。
函数式编程与命令式编程最大的不同在于:函数式编程关心数据的映射,命令式编程关心解决问题的步骤,面向对象编程是也是一种命令式编程。
另外函数式编程强调没有“副作用”,对目标对象的处理结果不应该改变原来的对象,其他外部变量也不应该受到影响,也正是这个特性,函数式编程的并行化处理也不需要关注锁的问题。
java的Lambda表达式与interface紧密相关,在使用前首先应该对函数定义有比较清晰的了解,并不是所有的地方都可以使用Lambda表示来简化,比如通过Lambda表达式来创建一个进程
new Thread(() -> { System.out.println("runnable running"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("runnable exit"); }).start();
由于Thread需要一个实现Runnable的类作为参数,同时Runnable只有一个方法需要实现,该方法不需要传入参数,那么就可以直接通过如下的形式来替代之前的匿名类:
() -> { //相关代码,如果只有一条执行语句,可以不要大括号 }
像GUI类型的需要传入event参数的
event -> { //相关代码 }
这意味着在设计公共接口的时候也要注意这样的限制,如果希望你的接口可以方便用户使用Lambda表达式来调用,那么定义的interface应当仅包含一个需要实现的方法。
再如,现在定义一个二目运算,但具体是加、减等方式由用户自己决定,这边只演示整型,其实java8里面已经有类似的接口
interface MyBiFunc { long apply(long left, long right); }
然后定义处理的函数
static long biFunc(long left, long right, MyBiFunc biFunction) { return biFunction.apply(left, right); }
最后在调用时实现具体的操作
public static void main(String[] args) { long num1 = 2, num2 = 3; System.out.println("add res=" + biFunc(num1, num2, (left, right) -> left + right)); System.out.println("multiply res=" + biFunc(num1, num2, (left, right) -> left * right)); }
在参数类型模棱两可的时候,可以手动设置参数的类型,例如
(long left, long right) -> { //相关代码 }
相关推荐
● lambda表达式语法 ● 流与管道的基本操作 ● 使用收集器与汇聚来终止管道 ● 创建流 ● 分割迭代器、fork/join框架与异常 ● 使用微基准测试检查流的性能 ● 使用默认方法演化API 目录 第1章 走进新生代...
Stream、Lambda表达式练习.doc
2_Lambda表达式.zip2_Lambda表达式.zip2_Lambda表达式.zip
主要介绍了解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...
适用人群 本源码资源适用于具备一定Java编程基础的开发人员和学习者。...2、函数式接口与Lambda表达式:学习如何使用Lambda表达式与不同类型的函数式接口进行交互,并了解如何通过Lambda表达式实现函数的传递和组合
通过多个示例详细演示了.Net中C#语言lambda表达式的基本用法,主要包括三个方面内容: 1.什么是lambda表达式 2.理解lambda表达式 3.使用lambda表达式
Microsoft Visual Studio.Net(VS2010)编写的lambda表达式语法控制台程序。
用于将将字符串转换为lambda表达式,对于实时获取运算结果或界面筛选条件,很有帮助
Java8的lambda表达式
简单的一些lambda表达式的测试代码,可用来学习简单的一些lambda表达式的测试代码,可用来学习
java lambda表达式,lambda 表达式基本上表达了函数式接口的实例(具有单一抽象方法的接口称为函数式接口。一个例子是 java.lang.Runnable)。lambda 表达式实现了唯一的抽象函数,因此实现了函数式接口 lambda ...
Lambda表达式之集合操作,代码里主要针对java 集合list的操作
什么是Linq表达式什么是Lambda表达式.pdf 什么是Linq表达式什么是Lambda表达式.pdf
Lambda表达式浅析
C#将Lambda表达式转成Sql语句,根据自己看的文章手写出来的,并配有自己理解的注释,有需要的同学可以自行下载。
精通lambda表达式:Java多核编程,使用lambda表达式和流的最佳实践
这份资源详细介绍了Python语言中lambda表达式的使用方法和技巧。lambda表达式是Python语言中的一种匿名函数,通常用于编写简洁的代码和函数式编程。 文档中详细介绍了lambda表达式的基本语法和使用方式,以及如何将...
java8lambda表达式的安卓Studio工程Demo,供初步学习使用
Stream和Lambda表达式是Java 8引入的两个重要特性,它们极大地简化了集合处理和函数式编程的复杂性。以下是关于Stream和Lambda表达式的最佳实践介绍: Lambda表达式 Lambda表达式允许我们以简洁的方式表示匿名函数...