欢迎来到天天文库
浏览记录
ID:30768430
大小:78.50 KB
页数:6页
时间:2019-01-03
《java8初体验(1):lambda表达式语法-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java8初体验(1):lambda表达式语法-编程开发技术Java8初体验(1):lambda表达式语法原文出处:一冰—天锦本文主要记录自己学习JavM的历程,方便大家一起探讨和自己的备忘。因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏羞的地方,希望大家帮忙指出,我会持续修改和优化。本文是该系列的第一篇,主要介绍Java8对屈丝码农最有吸引力的一个特性一lambda表达式。java8的安装工欲善其器必先利其器,首先安装JDK8o过程省略,大家应该都可以口己搞定。但是冇一点这里强调一下(Windows系
2、统):目前我们工作的版本一般是java6或者java7,所以很多人安装走阳8基本都是学习为主。这样就在自己的机器上会存在多版木的JDK。而且大家一般是希望在命令行屮执行java命令是基于老版本的jdk。但是在安装完jdk8并且没冇设置path的情况下,你如果在命令彳亍中输入:java-version,屏幕上会显示是jdk8。这是因为jdk8安装的时候,会默认在C:/Windows/System32屮增加java,exe,这个调用的优先级比path设置要高。所以即使path指定是老版本的jdk,但是执行java命令显示的
3、依然是新版木的jdk。这里我们要做的就是删除C:/Windows/System32屮的java,exe文件(不要手抖!)。Lambda初体验下面进入木文的止题-lambda表达式。首先我们看一下什么是lambda表达式。以下是维基百科上对Lambdaexpression”的解释:?afunction(orasubroutine)defined,andpossiblycal1ed,withoutbeingboundtoamidentificr。简单点说就是:一个不用被绑定到一个标识符上,并但可能被调用的函数。这个解释还不
4、够通俗,lambch表达式可以这样定义(不精确,自己的理解):一段带有输入参数的可执行语句块。这样就比较好理解了吧?一例胜千言。有读者反馈:不理解Stream的含义,所以这里先提供一个没用stream的1ambda表达式的例了。//这里省略list的构造Lisring>names二;Collections.sort(names,(ol,o2)->ol.compareTo(o2));//这里省略list的构造Listnames二;Collections,sort(names,newComparator5、tring>(){©Overridepublicintcompare(Stringol,Stringo2){rcturnol・comparcTo(o2);}});上面两段代码分别是:使用lambda表达式来排序和使用匿名内部类来排序。这个例子可以很明显的看出lambda表达式简化代码的效果。接下來展示lambda表达式和其好基友Stream的配合。Listnames=newArrayListO();names,add(,zTaoBao,z);names.add(,,ZhiFuBao,/);List6、ring>1owercaseNames二names,stream().map((Stringname)->{rcturnneinic.toLowerCasc();})・collect(Collectors・toList());这段代码就是对一个字符串的列表,把其屮包含的每个字符串都转换成全小写的字符串(熟悉Groovy和Scab的同学肯定会感觉很亲切)。注意代码笫四行的map方法调用,这里map方法就是接受了一个lambda表达式(其实是一个java.util,function.Function的实例,后面会介绍)。为7、什么需要Lambda表达式呢?在尝试回答这个问题Z前,我们先看看在Java8之前,如果我们想做上面代码的操作应该怎么办。先看看普通青年的代码:Listnames二newArrayListO();names.add(,/TaoBao,/);names,addC,ZhiFuBao,/);List1owercaseNames=newArrayListO();for(Stringname:names){lowercaseNames.add(name.toLowerCase());}接下來看看文艺8、青年的代码(借助Guava):Listnames=newArrayListO();names・add(z,TaoBao,z);names,add(,zZhiFuBao,z);ListlowercaseNames二Fluentlterable.from(names),transform(newFunc
5、tring>(){©Overridepublicintcompare(Stringol,Stringo2){rcturnol・comparcTo(o2);}});上面两段代码分别是:使用lambda表达式来排序和使用匿名内部类来排序。这个例子可以很明显的看出lambda表达式简化代码的效果。接下來展示lambda表达式和其好基友Stream的配合。Listnames=newArrayListO();names,add(,zTaoBao,z);names.add(,,ZhiFuBao,/);List6、ring>1owercaseNames二names,stream().map((Stringname)->{rcturnneinic.toLowerCasc();})・collect(Collectors・toList());这段代码就是对一个字符串的列表,把其屮包含的每个字符串都转换成全小写的字符串(熟悉Groovy和Scab的同学肯定会感觉很亲切)。注意代码笫四行的map方法调用,这里map方法就是接受了一个lambda表达式(其实是一个java.util,function.Function的实例,后面会介绍)。为7、什么需要Lambda表达式呢?在尝试回答这个问题Z前,我们先看看在Java8之前,如果我们想做上面代码的操作应该怎么办。先看看普通青年的代码:Listnames二newArrayListO();names.add(,/TaoBao,/);names,addC,ZhiFuBao,/);List1owercaseNames=newArrayListO();for(Stringname:names){lowercaseNames.add(name.toLowerCase());}接下來看看文艺8、青年的代码(借助Guava):Listnames=newArrayListO();names・add(z,TaoBao,z);names,add(,zZhiFuBao,z);ListlowercaseNames二Fluentlterable.from(names),transform(newFunc
6、ring>1owercaseNames二names,stream().map((Stringname)->{rcturnneinic.toLowerCasc();})・collect(Collectors・toList());这段代码就是对一个字符串的列表,把其屮包含的每个字符串都转换成全小写的字符串(熟悉Groovy和Scab的同学肯定会感觉很亲切)。注意代码笫四行的map方法调用,这里map方法就是接受了一个lambda表达式(其实是一个java.util,function.Function的实例,后面会介绍)。为
7、什么需要Lambda表达式呢?在尝试回答这个问题Z前,我们先看看在Java8之前,如果我们想做上面代码的操作应该怎么办。先看看普通青年的代码:Listnames二newArrayListO();names.add(,/TaoBao,/);names,addC,ZhiFuBao,/);List1owercaseNames=newArrayListO();for(Stringname:names){lowercaseNames.add(name.toLowerCase());}接下來看看文艺
8、青年的代码(借助Guava):Listnames=newArrayListO();names・add(z,TaoBao,z);names,add(,zZhiFuBao,z);ListlowercaseNames二Fluentlterable.from(names),transform(newFunc
此文档下载收益归作者所有