韦德国际bv1946_www.bv1946com_韦德国际1946手机版
做最好的网站

于是今天整理一下Java8中的Lambda表达式

日期:2019-11-03编辑作者:韦德国际bv1946计算机

Java8 Lambda表达式介绍

Lambda表达式是Java8里的一个重要特性,发布这么久了,最近在学swift语言时发现了其中的闭包的概念其实跟Lambda表达式极其相似,于是今天整理一下Java8中的Lambda表达式,做个介绍。

Lambda表达式其实就是提供Java编程中对于函数式编程的支持,在我们习惯了一切皆对象时,刚接触Lambda可能读起来比较费劲,但是习惯之后,其确实有助于代码的简洁,且在Python、swift等中都有类似于Lambda这种概念,未来可能大家都会用到,所以学习下还是有帮助的。

Lambda基本语法:([parameter…]) -> { statements; } //[]表可选,即括号可以无参

接下来我们通过一些实例来学习Lambda:

一:遍历

Java8在迭代器Iterable中新增了方法forEach(Consumer action),参数为一个Lambda表达式,即一个方法,接下来看下用法:

图片 1

图中可以看到,以前需要3行的代码,现在可以一行解决,甚至可以更简洁,如下:

图片 2

其中的::符号之前是作用域,之后是具体方法,例如Objest::hashCode,上图中也一样System.out其实是一个PrintStream对象,PrintStream对象有一个Println方法。

另外随口说一句,这个地方用到Arrays.asList()方法,大家可能经常用这个方法来返回List,但是这个地方有个要注意的地方是,Arrays.asList()返回的是java.util.Arrays的一个内部类java.util.Arrays.ArrayList< 喎?" target="_blank" class="keylink">vc3Ryb25nPqOsus3O0sPHxr2zo9PDtcQ8c3Ryb25nPmphdmEudXRpbC5BcnJheUxpc3Q8L3N0cm9uZz7Kx7K70rvR bXEo6xqYXZhLnV0aWwuQXJyYXlzLkFycmF5TGlzdLK7xNzX9mFkZCgpstnX96Osy TIu7Hg0uuyu7vhsai07aOstavKx9TL0NC74bGotO2jrLHg0uvNqLn9ysfS8s6qztLDx9a4z/K1xL3Tv9rKx0xpc3SjrExpc3TW0MrH09BhZGQoKbe9t6i1xKO6PGJyIC8 DQo8YnIgLz4NCjxpbWcgYWx0PQ=="" src="" title="" />

二:Runnable

Lambda表达式可以极大程度简化匿名内部类的代码,如下:

图片 3

当然也可以简化如下:

图片 4

三:Arrays排序

Arrays.sort()我们也经常会用到,我们来看下lambda表达式写的排序:

图片 5

图中可以看到,lambda表达式可以在一行内完成所需功能,精简了很多代码,且习惯了以后可读性也高,这里写这个例子主要是让大家看看lambda有多个参数时的写法,至于其中的Arrays.stream()我会在后面写一篇文章专门讲它,以及它的Map、reduce、filter等方法,此处只需要知道他返回的是一个Stream对象,可以传入lambda表达式进行遍历过滤操作即可。

四:Predicate

Predicate翻译为断言,作为参数时表示此处需传入一个返回true和false的lambda表达式,我们先看其使用方法:

图片 6

Predicate的test方法返回值为bool,看其源码时发现其还有and、or等方法,那么下面看一下Predicate可能的应用场景,对于一个数组做筛选操作:

图片 7

上图中可以看到,filter方法传入了两个lambda表达式,分别是判断字符串长度是否大于4和是否以A结尾,在filter方法中,通过and连接,各位也可以换成or试试效果,结果返回的List中只包含所需数据。

五:其他

另外有一点需要注意的是,由于lambda表达式相当于匿名内部类,所以其中引用的外部参数需要是fina的,所以不能赋值,跟匿名内部类一样,会在编译期报错,如下:

图片 8Java8的新特性的stream,有问题的可以关注微信公众号后留言提出。

Lambda表达式介绍 Lambda表达式是Java8里的一个重要特性,发布这么久了,最近在学swift语言时发现了其中的闭包的概念其实跟Lambda表达式...

本文由韦德国际bv1946手机版发布于韦德国际bv1946计算机,转载请注明出处:于是今天整理一下Java8中的Lambda表达式

关键词:

可用自带的truss

AIX,solaris 可用自带的truss Linux: 可用自带的strace或ltrace HP-UX: 可用tusc 需要下载tusc进行安装. 下载tusc 安装     swins...

详细>>