惊叹于λ表达式的简洁和优美,在这里也分享一下使用心得.
目标程序:使一个容器内的String类型的数据
1.长度不能超过5
2.全部变成大写
注意:这份代码导入了外部扩展的jar包,是google的guava包,需要百度下载.
一般的程序代码:
package s0222函数式编程; import java.util.Collection; import java.util.List; import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; public class Main { public static void main(String [] args){ //创建容器,存放String类型数据 List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd"); //函数f1,控制容器内元素长度小于等于5,用了匿名内部类 Function<String,String> f1=new Function<String,String>() { public String apply(String input) {return input.length()>5?input.substring(0, 5):input;} }; //函数f2,将元素转换成大写,用了匿名内部类 Function<String,String> f2=new Function<String,String>() { public String apply(String input) {return input.toUpperCase();} }; //组合函数f1,和函数f2 Function<String,String> f=Functions.compose(f1, f2); //函数式编程 Collection<String> list3= Collections2.transform(list2, f); //增强for循环,输出容器内每个元素 for(String temp:list3) System.out.println(temp); }}
运用了λ表达式的代码:
package s0222函数式编程; import java.util.Collection; import java.util.List; import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.collect.Collections2; import com.google.common.collect.Lists; public class Main { public static void main(String [] args){ //创建容器,存放String类型的数据 List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd"); //lambda表达式,函数f1,控制容器内元素长度小于等于5 Function<String,String> f1=(input)->input.length()>5?input.substring(0, 5):input; //lambda表达式,函数f1,将元素转换成大写 Function<String,String> f2=(input)->input.toUpperCase(); //组合函数f1,和函数f2 Function<String,String> f=Functions.compose(f1, f2); //函数式编程 Collection<String> list3= Collections2.transform(list2, f); //输出每个元素 list3.forEach(name->System.out.println(name) ); } }
我们将核心代码部分抽取出来,去掉注释,对比会更明显.
1.普通代码
List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd"); Function<String,String> f1=new Function<String,String>() { public String apply(String input) {return input.length()>5?input.substring(0, 5):input;} }; Function<String,String> f2=new Function<String,String>() { public String apply(String input) {return input.toUpperCase();} }; Function<String,String> f=Functions.compose(f1, f2); Collection<String> list3= Collections2.transform(list2, f); for(String temp:list3) System.out.println(temp);
2.运用λ表达式
List<String > list2=Lists.newArrayList("babkjsdhf","kik","dfdfdkd"); Function<String,String> f1=(input)->input.length()>5?input.substring(0, 5):input; Function<String,String> f2=(input)->input.toUpperCase(); Function<String,String> f=Functions.compose(f1, f2); Collection<String> list3= Collections2.transform(list2, f); list3.forEach(name->System.out.println(name) );
可以看到,运用λ表达式可以极大的简化代码,增强可读性!!
λ表达式可以简化1.只有一个方法的匿名内部类
2.遍历数组
另外,监听器对象也能运用lambda表达式
button.addActionListener((e) -> System.out.println("Hello") );
3.lambda表达式的形式
相关推荐
【Java基础笔记】Lambda表达式和函数式接口.docx
使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。...目的:帮助理解lambda表达式定义函数在Python中的具体使用。
适用人群 本源码资源适用于具备一定Java编程基础的开发人员和学习者。...2、函数式接口与Lambda表达式:学习如何使用Lambda表达式与不同类型的函数式接口进行交互,并了解如何通过Lambda表达式实现函数的传递和组合
主要介绍了Java Lambda表达式和函数式接口,结合实例形式分析了Java8 Lambda表达式和函数式接口相关原理、用法及操作注意事项,需要的朋友可以参考下
12.1_lambda表达式|函数式编程__匿名函数、高阶函数、装饰器|Python3.8入门_&_进阶_&_原生爬虫实战完全解
即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是依然使用匿名内部类解决。 本系列课程从Lambda表达式、方法的引用、Stream API三处着手...
● lambda表达式语法 ● 流与管道的基本操作 ● 使用收集器与汇聚来终止管道 ● 创建流 ● 分割迭代器、fork/join框架与异常 ● 使用微基准测试检查流的性能 ● 使用默认方法演化API 目录 第1章 走进新生代...
第17章 Lambda表达式与StreamAPIJava 8 于2014年3月14号发布,可以看成是自Java 5 以来最具革命性的版本。17.1 Lambda
第17章 Lambda表达式与StreamAPIJava 8 于2014年3月14号发布,可以看成是自Java 5 以来最具革命性的版本。17.1 Lambda
Stream、Lambda表达式练习.doc
2_Lambda表达式.zip2_Lambda表达式.zip2_Lambda表达式.zip
函数名 = lambda 参数 : 参数表达式 在使用的时候 函数名(变量) eg. 通过常规方式定义函数 if x<y: res = x+y else: res = x-y return res print(fun(1,3)) # 4 通过lambda表达式定义一个函数 fun = ...
java lambda表达式,lambda 表达式基本上表达了函数式接口的实例(具有单一抽象方法的接口称为函数式接口。一个例子是 java.lang.Runnable)。lambda 表达式实现了唯一的抽象函数,因此实现了函数式接口 lambda ...
lambda表达式和递归算法
使用 lambda 编写的代码更加简洁紧凑,但是 lambda 函数支持的功能却是十分有限的,目前 PEP8 已经不建议使用 lambda,而是推荐使用 def 去定义一个函数,即便如此,作为 Python 程序员,认识和了解该匿名函数还是有...
主要介绍了解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通过多个示例详细演示了.Net中C#语言lambda表达式的基本用法,主要包括三个方面内容: 1.什么是lambda表达式 2.理解lambda表达式 3.使用lambda表达式
Microsoft Visual Studio.Net(VS2010)编写的lambda表达式语法控制台程序。
Lambda and Anonymous Classes(I),展示如何使用Lambda表达式替代匿名内部类,说明Lambda表达式和函数接口的关系。 Lambda and Anonymous Classes(II),Lambda表达式的实现原理 Lambda and Collections,学习Java...
Stream和Lambda表达式是Java 8引入的两个重要特性,它们极大地简化了集合处理和函数式编程的复杂性。以下是关于Stream和Lambda表达式的最佳实践介绍: Lambda表达式 Lambda表达式允许我们以简洁的方式表示匿名函数...