美文网首页
Lambda 表达式

Lambda 表达式

作者: KingSun_阳 | 来源:发表于2016-10-14 15:29 被阅读0次

Lambda表达式是java 8 带来的革新.
Lambda 表达式让你能够将函数作为方法参数,或者将代码作为数据对待。
优点:在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,减少代码量,可读性增强, 发挥多核 CPU 的优势;
使用范围: 匿名内部类,监听器和事件处理器, 集合.
<h3>1.使用lambda表达式</h3>
要使用 Lambda 表达式,需要定义一个函数式接口, 如:
Function<T, R>:将 T 作为输入,返回 R 作为输出,他还包含了和其他函数组合的默认方法。
Predicate<T> :将 T 作为输入,返回一个布尔值作为输出,该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(与、或、非)。
Consumer<T> :将 T 作为输入,不返回任何内容,表示在单个参数上的操作。

上面的函数式接口是jdk 8里定义的,也可以自定义,定义一个接口,然后定义一个(只能一个)抽象方法.这个类就被识别成Functional Interface,当然最好在接口前加个标签@FunctionalInterface

@FunctionalInterface
public interface Functional<T>  {
    public void thefunction(T t);
}

<h3>2. lambda表达式</h3>
(Type t)->{ expression;}
由于可以识别Type 所以,可以简化成
(t)->{expression;}
如果只有一个变量,可以简化括号
t->{expression;}
如果只有一行语句,可以简化括号,去掉括号以后就不用加分号了
(t)->expression
例子:

Map<String,String> map…
map.forEach((String key,String value)
->{ System.out.println(key +" : "+value);}
);

简化成

map.forEach((key, value)
-> System.out.println(key +" : "+value)
);

还有一种写法
Type::Method
例子

i->System.out.println(i) 

也可以写成

System.out::println 

<h3>参考目录</h3>
Java 8 新特性概述
Oracle java 8

相关文章

网友评论

      本文标题:Lambda 表达式

      本文链接:https://www.haomeiwen.com/subject/dfagyttx.html